The forum on this site is closed for new comments and posts. Continue the conversation in the new forum, and learn more here.

Chroma Key Shader / Material

  • Please make this work for video ... if it doesn't already.

    Comment actions Permalink
  • Hi Stephen! This material works with videos and gifs too! 

    Comment actions Permalink
  • This is brilliant thank you so much!

    Comment actions Permalink
  • This is brilliant thank you so much!

    Comment actions Permalink
  • no link~

    Comment actions Permalink
  • Hi All,

    this is awesome. I am running into a problem, maybe you could hint me out:

    I would like to access the videotexture (mp4) via script to control the play.
    I cannot seem to address it like I usually do with Asset.Texture.videoTexture


    Any Ideas?

    Thank you people


    Comment actions Permalink
  • Hi eL Be,

    Can you show us your current script so i know what's missing or went wrong?

    Comment actions Permalink
  • Hi n-mikael,

    i messed around so much that in the end I have deleted the script; but basically i tried to access the videoTexture like this:

    //var myAnimation = mySpriteVisual.mainMaterial.mainPass.baseTex.control;

    I eded up with errors that said it "couldnt adress mainPass to undefined" or something like that.
    Which tells me for some reason the texture of the chromekey material wasn´t accessible.
    also what i experienced was that before the mp4 texture was playing, my imageplane was just white (which was the color of my "mainColor" of the material)
    My plan is to stop the animation on first frame and then on tap play it once. that´s it. An imagesequence is not an option(size is too big), even though that functionality works as i need it.
    Do you have any idea?
    Thank you for looking into my problem.
    Comment actions Permalink
  • Hey n-mikael,

    I tried again today and prepared my Problem in some screenshots.

    I applied the same script twice, one object has the chromaKeyMat 


    the other one has the default Mat. both carry the same mp4 Texture.


    The Default VideoTexture is controllable, the other one not.Can you Please help me? 

    Here´s the script


    // Control2DAnimation.js

    // Version: 0.0.1

    // Event: Lens Initialized

    // Description: Plays VideoTextures on trigger with delayTimeOption


    //@ui {"widget":"separator"}

    // @input string animationTrigger = TouchStartEvent { "widget": "combobox", "values": [ { "label": "Brows Lowered", "value": "BrowsLoweredEvent" }, { "label": "Brows Raised", "value": "BrowsRaisedEvent" }, { "label": "Brows Returned To Normal", "value": "BrowsReturnedToNormalEvent" }, { "label": "Face Found", "value": "FaceFoundEvent" }, { "label": "Face Lost", "value": "FaceLostEvent" }, { "label": "Kiss Finished", "value": "KissFinishedEvent" }, { "label": "Kiss Started", "value": "KissStartedEvent" }, { "label": "Mouth Closed", "value": "MouthClosedEvent" }, { "label": "Mouth Opened", "value": "MouthOpenedEvent" }, { "label": "Smile Finished", "value": "SmileFinishedEvent" }, { "label": "Smile Started", "value": "SmileStartedEvent" }, { "label": "Touch Start", "value": "TouchStartEvent" }, { "label": "Touch End", "value": "TouchEndEvent" }, { "label": "Tap", "value": "TapEvent" } ] }


    //@input SceneObject mySceneObject

    //@input Component.Image myObject

    //@input Asset.Texture myTex

    //@input float delayTime


    var loops = 1;

    var myVideo = script.myTex.control;

    var myScript = script.mySceneObject.getFirstComponent("ScriptComponent");




    var delayEvent = script.createEvent("DelayedCallbackEvent");



    //After Delay call startAnimation function

    function startCountdown(){





    var animationTriggerEvent = script.createEvent(script.animationTrigger);




    function startAnimation() {

    //play 2D Animation


    killScript(); //<- so I put it here


    if(myVideo.getStatus() == VideoStatus.Stopped){


    killScript(); //<-does not work




    function killScript(){




    Comment actions Permalink
  • Hi,

    Sorry for late response.

    Can you try "behavior script" to see if that solves the problem?

    Comment actions Permalink
  • Thanks for the tutorial! It was very helpful :D




    Comment actions Permalink
  • This is great, but how to apply this to the camera input?? It seems to only work with objects. I wanted to have chromakey on the camera.

    I know I could use the segmentation template for a virtual chromakey, but that's too heavy on the CPU and I already have a green screen on my background.

    I appreciate your help, thanks.

    Comment actions Permalink

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!