0

嘿伙计们,基本上我设置了一个粗略的场景。我终于能够将跑车的 3D 模型加载到我的场景中。

我可以使用例如 sphere.translateY(1) 为 Object3D 原语设置动画。

我为我的死无法弄清楚如何在我的汽车模型上做一个类似的翻译动画。首先它说当我为它创建全局变量时找不到汽车变量,然后我尝试将汽车传递给动画函数但无济于事。

我确定 translateY 仅适用于类似球体的 Object3D,那么如何在导入的 3d 模型上进行这种简单的翻译呢?我尝试增加位置。这是我的代码有人请帮忙!(我省略了相机和渲染代码等,这一切都只需要动画这辆车!

var sphere;
var car;

function init() {
    // THE USUAL STUFF, scene, camera, renderer
  }

function addSceneElements() {
 // Sphere
    sphere = new THREE.Mesh(new THREE.SphereGeometry(8, 70, 20), blueMat);
    sphere.position.set(-260, 9, 125);
    scene.add(sphere);

    var loader = new THREE.JSONLoader();
    loader.load( "models/hotride.js", function(geometry){
    var material = new THREE.MeshLambertMaterial({color: 0x66CCFF});
    var car = new THREE.Mesh(geometry, material);
    car.scale.set(7,7,7);
    car.position.set(10, 22, -1000);
    scene.add(car);
    animate();
  });
  }

function animate() {
sphere.translateX(1);
      //car.translateZ(2);
     // car.position.z += clock.getDelta();

      // render
      renderer.render(scene, camera);
       requestAnimationFrame( animate );
      controls.update();
    }
4

2 回答 2

1

你有一个全局 var car 和一个本地 var car

var car;

function init() {
    // THE USUAL STUFF, scene, camera, renderer
  }

function addSceneElements() {
 // Sphere
    sphere = new THREE.Mesh(new THREE.SphereGeometry(8, 70, 20), blueMat);
    sphere.position.set(-260, 9, 125);
    scene.add(sphere);

    var loader = new THREE.JSONLoader();
    loader.load( "models/hotride.js", function(geometry){
    var material = new THREE.MeshLambertMaterial({color: 0x66CCFF});
    var car = new THREE.Mesh(geometry, material);     //// <<<< local var !!!

这意味着全局汽车不会将网格分配给本地汽车。只需删除行中的var

    car = new THREE.Mesh(geometry, material);     //// <<<< global var !!!
于 2014-05-09T16:05:58.363 回答
0

您可以将模型添加到新的 Object3D 中,并操作此对象以进行平移/旋转。

于 2014-05-08T12:44:53.340 回答