Transform with screen tap controls

  • Hi JAK,

    I've made an example project for you based on the Portal template. It uses some UI buttons to move the camera forward, backward, and rotate 90 degrees left and right.

    Link to project file


    The basic setup is:

    Each button calls a behavior script custom trigger when pressed. Each button has a corresponding object (under Camera Behaviors) with a movement tween.

    The two rotational objects each have Behavior scripts on them that run their tweens when their matching custom trigger is called.

    The forward / back movements are a bit more tricky, since the tween doesn't let you move relative to the object rotation (just world or parent). So I made a simple helper script called RunObjectRelativeTween that listens for a custom triggers and runs a position tween in object space when called. This might be a little confusing, but you just have to set the "offset" parameter on that script to the relative movement you want the tween to do.

    Let me know if you need any more help!


    Comment actions Permalink
  • Awesome! Thanks Jacob. 

    Is there a way to prevent the portal from allowing the user to leave the portal space when using the movement buttons?

    Comment actions Permalink
  • You can use a script like this to limit the object position.

    // @input SceneObject object

    // @input SceneObject cornerA
    // @input SceneObject cornerB

    var transform = script.object.getTransform();

    var aPos = script.cornerA.getTransform().getWorldPosition();
    var bPos = script.cornerB.getTransform().getWorldPosition();

    var minBound = vec3.min(aPos, bPos);
    var maxBound = vec3.max(aPos, bPos);

    function clampVec3(vec, minVec, maxVec) {
    return vec3.max(minVec, vec3.min(vec, maxVec));

    function doClamping() {
    var pos = transform.getWorldPosition();
    pos = clampVec3(pos, minBound, maxBound);


    Just put this script on a new object, then set Object to your Camera. Create two empty objects to represent the corners of your portal area, and set these as Corner A and Corner B. Position these in the opposite corners of the space you want the camera to be constrained in. Also note that this does include Y (height off the ground), so one of your corners should be high off the ground.

    As an example, in the project I uploaded earlier I can set the corner positions to: (-308, 0, -268) and (518, 265, -974). The camera is forced to stay between these points for each axis (x, y, z).

    Let me know if you have any questions about this!


    Comment actions Permalink
Have a comment?

Please sign in to leave a comment.

We're here to help! We just need a little bit of information...

What system are you using?

Have you downloaded the latest version of Lens Studio?

Please download the latest version of Lens Studio. If you still run into this issue, please come back and report it!

Is this issue causing Lens Studio to crash?

What system do you run Lens Studio on?



Follow the next steps to help us solve your issue:

  • Copy and paste this text into your TerminalCommand Window
    open ~/Library/Preferences/Snap/Lens\ Studio/ %LOCALAPPDATA%\Snap\Lens Studio Copy Text
  • Press ReturnEnter to run the command. The Lens Studio folder will automatically open
  • Prepare to upload your files: zip the "Log" Folder by right-clicking and choosing "compress."
    Locate the Log.txt file right above it.

    Attach a screenshot of the issue:



What is this most relevant to?

Please enter a brief description of your issue:

Thanks for submitting this issue.

Unfortunately, it's likely due to the operating system or hardware you're using – since they don't meet the system requirements for Lens Studio.

Still, we hear you loud and clear, and are logging the issue in case there's ever a workaround we can provide!

Minimum Requirements

Operating System: Windows 10 (64 bit); MacOS 10.11+

Hardware: Minimum of Intel Core i3 2.5Ghz or AMD Phenom II 2.6Ghz with 4 GB RAM; Intel HD Graphics 4000 / Nvidia GeForce 710 / AMD Radeon HD 6450 or better; screen resolution of 1280x768 or higher

We'll try to resolve this issue as soon as possible. Thanks for letting us know about it!

Keep an eye out for a followup email from us. We may have a couple more questions for you, or we might already have a solution to offer.

Happy creating!