screentoworld with depth


    Apr 13 2006 | 4:44 am
    Hello,
    Does anyone know a simple solution to map the screen to world when depth is involved. The following is an axample which needs modification, because the coordinates are off when depth is not zero. Thanks. Charles.
    // create our listener object for our window var mylistener = new JitterListener("listentestwindow",callbackfun); var x1, y1, z1; z1 = 0; var zscalar = 1; function callbackfun(event) { var x,y,button; if (event.eventname=="mouse") { // arguments are (x,y,button,cmd,shift,capslock,option,ctrl) x = (event.args[0]-z1); y = (event.args[1]-z1); var world = render.screentoworld(x,y); post("x,", x, "y", y);post(); if (event.args[6] == 0){ x1 = (world[0]); y1 = (world[1]); } if (event.args[6] == 1){ x1 = world[0]; z1 = world[1] * zscalar; } jsketch.position = [x1, y1, z1]
    } } callbackfun.local = 1;

    • Apr 13 2006 | 9:23 am
    • Apr 13 2006 | 9:20 pm
      Hi Charles,
      Could you better formulate your question and provide a clear example and description of what you're expecting and what's being returned. Sorry but we're too busy to make these sorts of guesses. If you provide a z argument (as distance from the *camera*, 0-1 where 0 is the near clipping plane and 1 is the far clipping plane), screen to world will give you the world position at that distance from the camera.
      In the following situation, perhaps you want to manipulate an existing object. If so, I might suggest you call worldtoscreen to determine the screen depth coordinate of the existing object first and make use of it in your calculation. Though this is complete speculation as I'm not sure what you're trying to accomplish with the following.
      -Joshua
    • Apr 13 2006 | 9:37 pm
      On Apr 13, 2006, at 2:23 AM, Vincent Goudard wrote:
      > I am also interested by the world2screen ferature, which > unfortunately doesn't appear in the render object, when > used outside a javascript.
      This will be present in Jitter 1.5.3, however for the time being, you can make a very simple jit.gl.render wrapper in JS to accomplish this feature. For an example of dispatching arbitrary messages (for methods and attributes) to a JS instantiated Jitter object, you might want to check out the jsmoviebank.js example. For example:
      var myjitobj = new JitterObject("jit.whatever");
      function anything() { //pass off all other messages to the wrapped Jitter Object var a = arrayfromargs(arguments);
      // detect if method or attribute and call method or set property accordingly // methods are instances of the function class, detected with the isPrototypeOf method if (Function.prototype.isPrototypeOf(myjitobj[messagename])) { myjitobj[messagename](a); } else { myjitobj[messagename] = a; } }
      > It seems yours is using a render and window outside a jsui, is it?
      Looks like it's a JS instantiated instance of jit.gl.render.
      -Joshua