简体   繁体   English

显示在DIV中使用Three.js创建的“对象/画布”

[英]show “object/canvas” created using Three.js inside a DIV

Here is the Code: 这是代码:

I want the "object" (which is being created at run time in Canvas using Three.js) inside a specific DIV, right now the object is being created but its being created at the end of page, just before the closing of </body> how to change the position so it should load inside " <div id="container"></div> " div. 我想要特定DIV中的“对象”(在Canvas中使用Three.js在运行时创建),现在正在创建对象,但是它是在页面结束时创建的,就在</body>结束之前</body>如何更改位置,以便将其加载到“ <div id="container"></div> ” div中。

Here is my code: 这是我的代码:

HTML: HTML:

<div id="container"></div>

JS JS

 // revolutions per second
 var angularSpeed = 0.2;
 var lastTime = 0;

 // this function is executed on each animation frame
 function animate() {
     // update
     var time = (new Date()).getTime();
     var timeDiff = time - lastTime;
     var angleChange = angularSpeed * timeDiff * 2 * Math.PI / 1000;
     cube.rotation.y += angleChange;
     lastTime = time;

     // render
     renderer.render(scene, camera);

     // request new frame
     requestAnimationFrame(function () {
         animate();
     });
 }

 // renderer
 var renderer = new THREE.WebGLRenderer();
 renderer.setSize(window.innerWidth, window.innerHeight);
 document.body.appendChild(renderer.domElement);

 // camera
 var camera = new THREE.PerspectiveCamera(120, window.innerWidth / window.innerHeight, 1, 1000);
 camera.position.z = 700;

 // scene
 var scene = new THREE.Scene();

 // cube (Lenght, Height, Width)
 var cube = new THREE.Mesh(new THREE.CubeGeometry(400, 200, 200), new THREE.MeshNormalMaterial());
 //cube.overdraw = false;
 scene.add(cube);

 // start animation
 animate();

FIDDLE for the same: http://jsfiddle.net/6a7u4/1/ 相同的文件: http : //jsfiddle.net/6a7u4/1/

Let me know if you need any other information. 让我知道您是否需要其他信息。

Please suggest. 请提出建议。

At a guess a测

document.body.appendChild(renderer.domElement);

should be 应该

document.getElementById("container").appendChild(renderer.domElement);

Edit: In order to get this working as expected, I've also updated the size to grab its height/width from the container div also. 编辑:为了使此工作按预期工作,我还更新了大小以从容器div也获取其高度/宽度。 The updated render coded looks as follows. 更新的渲染编码看起来如下。

// renderer
var container = document.getElementById("container");
var renderer = new THREE.WebGLRenderer();
renderer.setSize(container.offsetWidth, container.offsetHeight);
container.appendChild(renderer.domElement);

Jsfiddle of result: http://jsfiddle.net/6a7u4/2/ 结果的jsfiddle: http : //jsfiddle.net/6a7u4/2/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM