【问题标题】:Three.js - Translating vs Moving?Three.js - 翻译与移动?
【发布时间】:2014-09-14 22:28:58
【问题描述】:

假设我有一个自定义立方体网格,其原点位于其中一个角。 我想指定立方体的原点位于它的中心。 我知道我可以进行翻译,而且它似乎有效(我可以通过旋转立方体来证明它有效,它围绕中心点旋转)。

但是,我一直认为平移只是移动到 3D 空间中的另一个点(而不是设置原点)。

是我遗漏了什么,还是我只是混淆了实际上是同一件事的两件事?

* 总结 *

请注意,如果我想移动一个对象,我只是简单地更新位置向量。 并应用翻译似乎是更新原点。 我的困惑来自于我的理解,即“翻译”只是在 3D 空间中“移动”对象的一个​​花哨术语。 因此,究竟什么是平移(在 3d 空间中移动,或更新原点,或两者兼而有之)?

【问题讨论】:

    标签: 3d three.js translation


    【解决方案1】:

    几何上的平移移动原点:

    var geometry = new THREE.CubeGeometry( 1, 1, 1 );
    geometry.applyMatrix( new THREE.Matrix4().makeTranslation( 0, 0.5, 0 ) );
    

    Object3D 上的平移移动位置:

    var obj = new THREE.Mesh(geometry, material);
    obj.position.set(0.5, 0.5, 0.5);
    

    【讨论】:

    • Geometry 类的 translate() 方法是否也会改变原点?
    • 是的,该方法的实现与上面的代码相同:github.com/mrdoob/three.js/blob/…
    • object3D的translate方法呢? obj.translateX(20) 这个函数是在设置位置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2011-12-26
    • 2011-11-24
    • 2016-07-31
    • 2014-02-19
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多