Is this an optimal way to access canvas function froms Chracter class

Sounds like what you need are trace functions. has an example Wiki article here that should be able to help.

Beyond that Canvas has it own native Deproject function as well.