to Three.js przykład kod AnimacjaUmieszczenie three.js animacji wewnątrz div
<script defer="defer">
var angularSpeed = 0.2;
var lastTime = 0;
function animate(){
var time = (new Date()).getTime();
var timeDiff = time - lastTime;
var angleChange = angularSpeed * timeDiff * 2 * Math.PI/1000;
plane.rotation.z += angleChange;
lastTime = time;
renderer.render(scene, camera);
requestAnimationFrame(function(){
animate();
});
}
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 1000);
camera.position.y = -450;
camera.position.z = 400;
camera.rotation.x = 45 * (Math.PI/180);
var scene = new THREE.Scene();
var plane = new THREE.Mesh(new THREE.PlaneGeometry(300, 300), new THREE.MeshNormalMaterial());
plane.overdraw = true;
scene.add(plane);
animate();
</script>
ja jak wiązanie kod animacji do określonych div poprzez div id. Tak więc animacja będzie wyświetlana wewnątrz elementu div. To pozwoliłoby mi łatwo manipulować lokalizacją animacji za pomocą css. Miałem na myśli coś takiego:
html:
<canvas id="myCanvas" width="578" height="200"></canvas>
javascript:
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
// do stuff here
Ale nie znaleźli sposób, aby zrobić coś takiego z three.js. Jak widać w przykładzie kodu, nie ma elementu canvas, do którego mogę się odwołać. Jakieś pomysły?
Ale co, jeśli szerokość i wysokość są różne. Potrzebuję ich różnych, ale to faktycznie zmienia proporcje wysokości i szerokości. Zatem koła wydają się być owalne. –
@sahilshekhawat 'renderer.setSize (canvas_width, canvas_height);' i upewnij się, że "aspekt obrazu" kamery jest poprawny. – WestLangley
Używam '' setSize'' z kamerą perspektywiczną. Nie myślałem o współczynniku kształtu kamery. Dzięki –