Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var renderer = new THREE.WebGLRenderer({
- antialias: true,
- alpha: true
- });
- renderer.setClearColor(new THREE.Color("lightgrey"), 0);
- renderer.setSize(640, 480);
- renderer.domElement.style.position = "absolute";
- renderer.domElement.style.top = "0px";
- renderer.domElement.style.left = "0px";
- document.body.appendChild(renderer.domElement);
- // array of functions for the rendering loop
- var onRenderFcts = [];
- // init scene and camera
- var scene = new THREE.Scene();
- // Create a camera
- var camera = new THREE.Camera();
- scene.add(camera);
- var arToolkitSource = new THREEx.ArToolkitSource({
- sourceType: "webcam"
- });
- arToolkitSource.init(onResize);
- // handle resize
- window.addEventListener("resize", onResize);
- function onResize() {
- arToolkitSource.onResize();
- arToolkitSource.copySizeTo(renderer.domElement);
- if (arToolkitContext.arController !== null) {
- arToolkitSource.copySizeTo(arToolkitContext.arController.canvas);
- }
- }
- // create atToolkitContext
- var arToolkitContext = new THREEx.ArToolkitContext({
- cameraParametersUrl: "data/camera_para.dat",
- detectionMode: "color"
- });
- // initialize it
- arToolkitContext.init(function onCompleted() {
- // copy projection matrix to camera
- camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix());
- });
- // update artoolkit on every frame
- onRenderFcts.push(function() {
- if (!arToolkitSource.ready) return;
- arToolkitContext.update(arToolkitSource.domElement);
- // update scene.visible if the marker is seen
- scene.visible = camera.visible;
- });
- // init controls for camera
- var markerControls = new THREEx.ArMarkerControls(arToolkitContext, camera, {
- type: "pattern",
- patternUrl: "data/santas_hat.patt",
- changeMatrixMode: "cameraTransformMatrix"
- });
- // as we do changeMatrixMode: 'cameraTransformMatrix', start with invisible scene
- scene.visible = false;
- // add a torus knot
- var geometry = new THREE.CubeGeometry(1, 1, 1);
- var material = new THREE.MeshNormalMaterial({
- transparent: true,
- opacity: 0.5,
- side: THREE.DoubleSide
- });
- var mesh = new THREE.Mesh(geometry, material);
- mesh.position.y = geometry.parameters.height / 2;
- scene.add(mesh);
- var geometry = new THREE.TorusKnotGeometry(0.3, 0.1, 64, 16);
- var material = new THREE.MeshNormalMaterial();
- var mesh = new THREE.Mesh(geometry, material);
- mesh.position.y = 0.5;
- scene.add(mesh);
- onRenderFcts.push(function(delta) {
- mesh.rotation.x += Math.PI * delta;
- });
- // render the scene
- onRenderFcts.push(function() {
- renderer.render(scene, camera);
- });
- // run the rendering loop
- var lastTimeMsec = null;
- requestAnimationFrame(function animate(nowMsec) {
- // keep looping
- requestAnimationFrame(animate);
- // measure time
- lastTimeMsec = lastTimeMsec || nowMsec - 1000 / 60;
- var deltaMsec = Math.min(200, nowMsec - lastTimeMsec);
- lastTimeMsec = nowMsec;
- // call each update function
- onRenderFcts.forEach(function(onRenderFct) {
- onRenderFct(deltaMsec / 1000, nowMsec / 1000);
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement