【问题标题】:How to create multiple geometries in three.js?如何在three.js中创建多个几何?
【发布时间】:2016-09-29 04:14:43
【问题描述】:

您好,我目前正在使用 three.js,我想在轴的 4 个部分中创建 4 个立方体。我能够创建一个正在旋转的立方体,但如何创建其他三个?,我尝试了 clone () 函数和 position.set,但我似乎无法在不同的轴上创建另一个立方体。感谢您的帮助或指导 这是我的javascript

var camera;
var scene;
var renderer;
var mesh;

init();
animate();

function init() {

    scene = new THREE.Scene();
    camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 1000);

    var light = new THREE.DirectionalLight( 0xffffff );
    light.position.set( 0, 1, 1 ).normalize();
    scene.add(light);

    var geometry = new THREE.CubeGeometry( 10, 10, 10);
    var material = new THREE.MeshPhongMaterial( { ambient: 0x050505, color: 0x0033ff, specular: 0x555555, shininess: 30 } );

    mesh = new THREE.Mesh(geometry, material );
    mesh.position.z = -50;
    scene.add( mesh );

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

    window.addEventListener( 'resize', onWindowResize, false );

    render();
}

function animate() {
    mesh.rotation.x += .04;
    mesh.rotation.y += .02;

    render();
    requestAnimationFrame( animate );
}

function render() {
    renderer.render( scene, camera );
}

function onWindowResize() {
    camera.aspect = window.innerWidth / window.innerHeight;
    camera.updateProjectionMatrix();
    renderer.setSize( window.innerWidth, window.innerHeight );
    render();
}

【问题讨论】:

    标签: javascript three.js geometry


    【解决方案1】:

    您是否将克隆添加到场景中?

    var newMesh = mesh.clone();
    newMesh.position.x = 50;
    scene.add(newMesh);
    

    你可以看到一个工作的代码笔here

    【讨论】:

    • 好的,谢谢,我会试试的,如果我想改变其中一个立方体,例如它的纹理,我还能使用克隆吗?
    • 我更新了the codepen 以展示如何更改克隆网格的材质。 newMesh.material = //Your new material
    • 好的,我拿到了 3 个立方体,我可以改变材料,第四个位置(第四象限)我应该做什么位置?我有位置 x 、位置 y 和位置 z,我现在应该使用 position.set 吗(我试过了,但没用 :-( )。非常感谢
    • 第四象限是什么意思?如果你想把它们放在 XYZ 轴的形状,你可以试试mesh.position.set(0, 0, 0); mesh2.position.set(50, 0, 0); mesh3.position.set(0, 50, 0); mesh4.position.set(0, 0, 50);。如果答案解决了您关于克隆的原始问题,请随意将答案标记为已接受,并在需要时提出新问题。
    • 截至今天的死链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多