【问题标题】:Change the angle of 3D "Cube" created using Three.js更改使用 Three.js 创建的 3D“立方体”的角度
【发布时间】:2014-03-12 13:30:34
【问题描述】:

我从 Three.js 示例中创建了一个 3D 线框立方体,但我想改变立方体的角度。

目前看起来是这样的:

但我希望它看起来像这样:

这是我的代码:

HTML

<script src="http://www.html5canvastutorials.com/libraries/three.min.js"></script>
<div id="container"></div>

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.y += angleChange;
    lastTime = time;

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

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

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

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

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

// cube Length, Height, Width
var cube = new THREE.Mesh(new THREE.CubeGeometry(400, 100, 200), new THREE.MeshBasicMaterial({
    wireframe: true,
    color: '#ff0000'
}));
cube.rotation.x = Math.PI * 0.1;
scene.add(cube);

// start animation
animate();

如果您需要任何其他信息,请告诉我。

请提出建议。

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    第一个图像是透视投影,第二个是正交投影。

    这里有一个 SO 线程解释了如何设置正交相机:
    https://stackoverflow.com/a/17567292/2941902

    【讨论】:

    • 感谢您的调查,我阅读了您提到的 SO 链接,当我更改相机时,我的脚本停止工作,我确定我做了一些错误的更改或遗漏了一些东西。但我只是尝试使用 SirBraneDamuj 建议的“X”和“Y”对 cube.rotation 进行更改,它成功了!!!
    【解决方案2】:
    cube.rotation.x = Math.PI * 0.1;
    

    通过这条线,您将立方体在其 X 轴(水平)上倾斜 0.1*pi。我不确定您到底需要什么值,但您可以使用yz 而不是x 来调整每个轴的旋转。只需使用这些值,直到它看起来像您想要的那样。

    粗略的猜测,我想说你想在 Y 轴上旋转大约 70 度(转换为弧度),在 Z 轴上可能旋转 20 度。

    现在,如果您希望它看起来完全像您的照片,那么其他人的答案就是您要寻找的。你需要一个正交投影。

    【讨论】:

    • 谢谢它的工作,我只是改变了“cube.rotation.x = Math.PI * 0.1;”到 >>> "cube.rotation.x = Math.PI * 0.1; cube.rotation.y = Math.PI * 0.3; " 它成功了!!!
    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 2014-03-12
    • 2015-11-22
    • 2014-03-14
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多