Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. var renderer = new THREE.WebGLRenderer({
  2. antialias: true,
  3. alpha: true
  4. });
  5.  
  6. renderer.setClearColor(new THREE.Color("lightgrey"), 0);
  7. renderer.setSize(640, 480);
  8. renderer.domElement.style.position = "absolute";
  9. renderer.domElement.style.top = "0px";
  10. renderer.domElement.style.left = "0px";
  11. document.body.appendChild(renderer.domElement);
  12.  
  13. // array of functions for the rendering loop
  14. var onRenderFcts = [];
  15.  
  16. // init scene and camera
  17. var scene = new THREE.Scene();
  18.  
  19. // Create a camera
  20. var camera = new THREE.Camera();
  21. scene.add(camera);
  22.  
  23. var arToolkitSource = new THREEx.ArToolkitSource({
  24. sourceType: "webcam"
  25. });
  26.  
  27. arToolkitSource.init(onResize);
  28.  
  29. // handle resize
  30. window.addEventListener("resize", onResize);
  31.  
  32. function onResize() {
  33. arToolkitSource.onResize();
  34. arToolkitSource.copySizeTo(renderer.domElement);
  35.  
  36. if (arToolkitContext.arController !== null) {
  37. arToolkitSource.copySizeTo(arToolkitContext.arController.canvas);
  38. }
  39. }
  40.  
  41. // create atToolkitContext
  42. var arToolkitContext = new THREEx.ArToolkitContext({
  43. cameraParametersUrl: "data/camera_para.dat",
  44. detectionMode: "color"
  45. });
  46.  
  47. // initialize it
  48. arToolkitContext.init(function onCompleted() {
  49. // copy projection matrix to camera
  50. camera.projectionMatrix.copy(arToolkitContext.getProjectionMatrix());
  51. });
  52.  
  53. // update artoolkit on every frame
  54. onRenderFcts.push(function() {
  55. if (!arToolkitSource.ready) return;
  56.  
  57. arToolkitContext.update(arToolkitSource.domElement);
  58.  
  59. // update scene.visible if the marker is seen
  60. scene.visible = camera.visible;
  61. });
  62.  
  63. // init controls for camera
  64. var markerControls = new THREEx.ArMarkerControls(arToolkitContext, camera, {
  65. type: "pattern",
  66. patternUrl: "data/santas_hat.patt",
  67. changeMatrixMode: "cameraTransformMatrix"
  68. });
  69.  
  70. // as we do changeMatrixMode: 'cameraTransformMatrix', start with invisible scene
  71. scene.visible = false;
  72.  
  73. // add a torus knot
  74. var geometry = new THREE.CubeGeometry(1, 1, 1);
  75. var material = new THREE.MeshNormalMaterial({
  76. transparent: true,
  77. opacity: 0.5,
  78. side: THREE.DoubleSide
  79. });
  80.  
  81. var mesh = new THREE.Mesh(geometry, material);
  82. mesh.position.y = geometry.parameters.height / 2;
  83. scene.add(mesh);
  84.  
  85. var geometry = new THREE.TorusKnotGeometry(0.3, 0.1, 64, 16);
  86. var material = new THREE.MeshNormalMaterial();
  87. var mesh = new THREE.Mesh(geometry, material);
  88. mesh.position.y = 0.5;
  89. scene.add(mesh);
  90.  
  91. onRenderFcts.push(function(delta) {
  92. mesh.rotation.x += Math.PI * delta;
  93. });
  94.  
  95. // render the scene
  96. onRenderFcts.push(function() {
  97. renderer.render(scene, camera);
  98. });
  99.  
  100. // run the rendering loop
  101. var lastTimeMsec = null;
  102.  
  103. requestAnimationFrame(function animate(nowMsec) {
  104. // keep looping
  105. requestAnimationFrame(animate);
  106.  
  107. // measure time
  108. lastTimeMsec = lastTimeMsec || nowMsec - 1000 / 60;
  109.  
  110. var deltaMsec = Math.min(200, nowMsec - lastTimeMsec);
  111. lastTimeMsec = nowMsec;
  112.  
  113. // call each update function
  114. onRenderFcts.forEach(function(onRenderFct) {
  115. onRenderFct(deltaMsec / 1000, nowMsec / 1000);
  116. });
  117. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement