Reputation: 85
I am learning three.js, and so far it is going good. I managed to program a cube on the canvas in JS Fiddle, but when I tried to use Orbit Controls to rotate it, it just showed a black canvas.
I have tried researching on the three.js website and I have looked at other working examples with Orbit Controls, but none of them have worked for me.
<script src='http://threejs.org/build/three.min.js'></script>
<script src='http://threejs.org/examples/js/controls/OrbitControls.js'></script>
<script>
let container, renderer, scene, camera, controls;
function init() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0xccccff);
document.body.appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.z = 4;
controls = new THREE.OrbitControls(camera, renderer.domElement);
let geometry = new THREE.BoxGeometry(1, 1, 1);
let material = new THREE.MeshBasicMaterial({color: 0x000000});
let cube = new THREE.Mesh(geometry, material);
scene.add(cube);
window.addEventListener('resize', resizeFunction);
}
let resizeFunction = function() {
let width = window.innerWidth;
let height = window.innerHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setSize(width, height);
}
let animate = function() {
controls.update();
renderer.render(scene, camera);
requestAnimationFrame(animate);
}
init();
animate();
</script>
I could not find any error messages. I expected the output to be a fully rotating black cube on a lighter background, but instead it showed a completely black screen. I also have checked my code multiple times, and I have found no problem. Hope you guys can help!
Upvotes: 0
Views: 531
Reputation: 10165
Seems to work for me.
let container, renderer, scene, camera, controls;
function init() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0xccccff);
document.body.appendChild(renderer.domElement);
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.z = 4;
controls = new THREE.OrbitControls(camera, renderer.domElement);
let geometry = new THREE.BoxGeometry(1, 1, 1);
let material = new THREE.MeshBasicMaterial({color: 0x000000});
let cube = new THREE.Mesh(geometry, material);
scene.add(cube);
window.addEventListener('resize', resizeFunction);
}
let resizeFunction = function() {
let width = window.innerWidth;
let height = window.innerHeight;
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.setSize(width, height);
}
let animate = function() {
controls.update();
renderer.render(scene, camera);
requestAnimationFrame(animate);
}
init();
animate();
<script src='http://threejs.org/build/three.min.js'></script>
<script src='http://threejs.org/examples/js/controls/OrbitControls.js'></script>
Upvotes: 0