THREEJS将XYZ坐标转换为对象旋转

时间:2016-04-28 20:21:36

标签: javascript 3d three.js rotation geometry

我正在使用THREE JS。我有一个球体对象(使用THREE.SphereGeometry制作),在这个球体内部我有另一个较小的球体。两个球体都具有相同的中心(因此较小的球体恰好位于较大球体的中间)。我的相机位于较大的球体内部,我可以看到更大球体的内部表面(我在3D商店内)。在这里,我创造了更大的外球:

setupSphereProjection() {
    // creation of a big sphere geometry
    //THREE.SphereGeometry(SPHERE RADIUS, WIDTH SEGMENTS, HEIGHT SEGMENTS)
    this.sphere = new THREE.SphereGeometry(sphereRadius, 40, 40);
    this.sphere.applyMatrix(new THREE.Matrix4().makeScale(-1, 1, 1));

    // creation of the sphere material
    let sphereMaterial = new THREE.MeshBasicMaterial();

    let loader = new THREE.TextureLoader();
    loader.crossOrigin = "anonymous";
    sphereMaterial.map = loader.load(testImage);

    // geometry + material = mesh (actual object)
    this.sphereMesh = new THREE.Mesh(this.sphere, sphereMaterial);
    this.scene.add(this.sphereMesh);
}

我的设置是这样的,当我点击较大球体的表面时,我得到更大球体表面上点击的XYZ坐标。我想要的是让较小的球体旋转以面向XYZ坐标的位置。 (因此,当用户点击较大球体的表面时,较小的球体旋转以查看外球体上的点击位置)。这是我点击外球体表面(半径为100)时得到的THREE.Vector3:

THREEE.Vector3 {x: -8.755543860298761, y: -2.284054920077946, z: -99.22118491615181}

我努力将XYZ坐标转换为内球的旋转。我不确定是否应该使用四元数或欧拉角或两者。我尝试过不同的方法,到目前为止还没有一种方法可行。任何帮助/建议都会受到热烈欢迎。

0 个答案:

没有答案