-
Notifications
You must be signed in to change notification settings - Fork 103
Scene
Note that Scene( width, height, fov, nearclip, farclip, octree ) may be deprecated
The Scene class is used to represent a collection of SceneObject objects that compose a scene. Scene handles transforming, rendering, motion application and more.
var myScene = new CubicVR.Scene({
camera: { // Specify a camera, a default one is provided otherwise.
width: 512,
height: 512,
fov: 60,
nearclip: 0.1,
farclip: 400,
},
sceneObjects: null, // An array of [[SceneObject]] objects to bind to the scene.
lights: null, // An array of [[Light]] objects to bind to the scene.
octree: null, // An octree to bind to the scene for visibility use.
skybox: null, // A skybox image/texture to use.
wireframe: null // Set true to enable wireframe rendering by default (for meshes with edges built)
});
Attach an Octree octree to the Scene. The Octree provides automatic visibility/culling for the Scene.Camera
Parameters:
octree - An initialized Octree object, ensuring sufficient dimensions for the Scene.
Returns:
none
Attach a SkyBox to the Scene, a skybox provides a simple way to provide a background viewable from all angles.
Parameters:
skybox - A SkyBox object.
Returns:
none
Attach a SceneObject and it's child objects to the scene.
Parameters:
-
sceneObj
: A valid SceneObject -
pickable
: true if you wish this object to be pickable via bbRayTest(), false if not, default:false
-
use_octree
: Whether or not to include this SceneObject in octree visibility calculations, default:true
Returns:
none
Retrieve a bound SceneObject with the given name of name.
Parameters:
name - The name of the SceneObject to retrieve.
Returns:
SceneObject if successful, null if not found.
Remove a SceneObject and it's child objects from the scene.
Parameters:
-
sceneObj
: A valid SceneObject
Returns:
none
Attach a Light to the scene.
Parameters:
-
lightObj
: A valid Light. -
use_octree
: Whether or not to include this Light in octree visibility calculations, default:true
Returns:
none
Remove a Light from the scene.
Parameters:
-
lightObj
: A valid Light.
Returns:
none
Attach a Camera to the scene. Replaces the Scene.camera
binding with cameraObj.
Parameters:
cameraObj - A valid Camera
Returns:
none
Replaces the Scene.camera
binding with cameraObj.
Parameters:
cameraObj - A valid Camera
Returns:
none
Return the Camera with the given name cameraName.
Parameters:
cameraName - The name of the Camera
Returns:
A Camera object if found, null if not.
Remove a Camera from the scene.
Parameters:
cameraObj - A valid Camera
Returns:
none
Evaluate any motion controllers to the given time_index in seconds and apply relevant transformations.
Parameters:
time_index - Time to evaluate in Seconds.
Returns:
none
Render the scene from the current Scene.camera
point of view.
Parameters:
-
options
: Optional rendering parameters such as supplying a post-process chain.
var options = {
postProcess: myPostProcessChain, // Supply a PostProcessChain to render directly to it.
postBuffer: false // 'false' to clear the PostProcess before render, 'true' to keep it
};
Returns:
none
Cast a ray and test for any pickable objects that intersect that ray.
Parameters:
-
position
: Source position for ray, typicallyCamera.position
if picking. -
ray
: Ray vector from position, typicalyCamera.getRayTo( view_x, view_y )
. -
axisMatch
: How many axes must have a solid picking match to be considered picked; (< 3 = fuzzy match) values 1-3, default:2
.
Returns:
An array of SceneObjects indexed by distance. The first element will be the best ray match.
From samples/basic/cube_scene.html:
// ...
// New scene with our canvas dimensions and default camera with FOV 80
var scene = new CubicVR.Scene(canvas.width, canvas.height, 80);
// SceneObject container for the mesh
var boxObject = new CubicVR.SceneObject(boxMesh);
// Add SceneObject containing the mesh to the scene
scene.bindSceneObject(boxObject);
// set initial camera position and target
scene.camera.position = [1, 1, 1];
scene.camera.target = [0, 0, 0];
// Start our main drawing loop, it provides a timer and the gl context as parameters
CubicVR.MainLoop(function(timer, gl) {
scene.render();
});