Note that there are some explanatory texts on larger screens.

plurals
  1. POthree.js camera like biodigitalhuman.com camera
    primarykey
    data
    text
    <p>I am a new developer and use Three.js for creating 3D screens. my problem is, i want to rotate camera around 3D object like in <a href="https://www.biodigitalhuman.com/" rel="nofollow">as this site control its camera</a> </p> <p>This script is one of my efforts to rotate camera around object smoothly .</p> <pre><code> &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;three.js webgl - materials - cube reflection / refraction [Walt]&lt;/title&gt; &lt;meta charset="utf-8"&gt; &lt;meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"&gt; &lt;/head&gt; &lt;body&gt; &lt;script src="js/libs/three.js-r50/three.js"&gt;&lt;/script&gt; &lt;script src="js/libs/Detector.js"&gt;&lt;/script&gt; &lt;script src="js/libs/stats.min.js"&gt;&lt;/script&gt; &lt;button onclick="rotateCameraDown();"&gt;Down&lt;/button&gt; &lt;button onclick="rotateCameraUp();"&gt;UP&lt;/button&gt; &lt;button onclick="rotateCameraRight();"&gt;Right&lt;/button&gt; &lt;button onclick="rotateCameraLeft();"&gt;Left&lt;/button&gt; &lt;script&gt; var r , phi , theta; var camera, scene, renderer; var geometry, material, redCube, greenCube; init(); animate(); function updateAngles(){ var vec = new THREE.Vector3(); vec.z =r * Math.sin(theta) * Math.cos(phi) +redCube.position.z; vec.x =r * Math.sin(theta) * Math.sin(phi) + redCube.position.x; vec.y =r * Math.cos(theta) + redCube.position.y; console.log("vec.x "+vec.x+" : "+vec.y+" : "+vec.z+" theta:"+theta+" phi:"+phi); return vec; } function rotateCameraRight(){ phi += Math.PI/40 ; camera.position = updateAngles(); camera.lookAt(redCube.position); } function rotateCameraLeft(){ phi -= Math.PI/40 ; camera.position = updateAngles(); camera.lookAt(redCube.position); } function rotateCameraDown() { theta += Math.PI/40 ; camera.position = updateAngles(); camera.lookAt(redCube.position); }; function rotateCameraUp() { theta -= Math.PI/40 ; camera.position = updateAngles(); camera.lookAt(redCube.position); }; function init() { r = 5; phi = 0; theta = Math.PI/4; camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000); scene = new THREE.Scene(); renderer = new THREE.CanvasRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); geometry = new THREE.CubeGeometry(2, 2, 2); material = new THREE.MeshBasicMaterial({ color:0xff0000,wireframe:true }); redCube = new THREE.Mesh(geometry, material); redCube.position.z = 5; redCube.position.y = 5; redCube.position.x = 5; camera.lookAt(redCube.position); scene.add(redCube); scene.add(camera); } function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } &lt;/script&gt; &lt;/body&gt; &lt;/html&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload