//This scene no longer includes a user because it is automatically included by the run_yg script //stencil buffer operations need to happen before other rendering grabber myGrabber(position(0 5 5)) { object(file(block1.pfb),size(4.3 0.3 4.3),position(0 0.3 0)) //the stencilBuffer node should usually refer to a group node stencilBuffer(scene(reflectionResult)) { transform(size(4)) { wandTrigger(volume(box),when(button1,myGrabber.toggle($wand))) texture(orientation(90 0 0)) } } userTrigger(volume(box -20 -20 -20 20 20 20), when(enter,reflections.addNode($user)), when(exit,reflections.removeNode($user))) group reflectionResult() { reflection reflections(node(reflectionGroup2)) } } environment(skycolor(0.1 0.2 0.7)) //even lighting will help to prevent lighting problems light(position(10 -10 10),diffuse(0.25 0.25 0.25)) light(position(-10 10 10),diffuse(0.25 0.25 0.25)) //the portion of the scene being reflected should not have a parent transform group reflectionGroup1() { //reflecting spotlights can help keep the correct lighting but the //intensity doubles and lighting changes when the reflection is moved transform(position(10 10 10)) { spotlight(diffuse(0.25 0.25 0.25)) object(file(sphere.pfb)) } wandTrigger(when(button2,reflections.node(reflectionGroup1)), when(button3,headAvatarUser0.draw,bodyAvatarUser0.draw)) group reflectionGroup2() { object(file(tree.pfb),position(5 -10 5)) object(file(block1.pfb),position(-10 -40 10),size(20)) } object(file(sphere.pfb),position(0 -20 5),size(10)) }