【问题标题】:How to change a scale in three js (through assignment)如何在三个js中改变一个比例(通过赋值)
【发布时间】:2016-01-02 15:11:50
【问题描述】:

我在threejs中有两个对象。我希望他们分享scalevector 的价值

  mesh1 = new THREE.Mesh(geometry, material); 
  mesh1.scale.x = 0.47;

  mesh2 = new THREE.Mesh(geometry, material); 
  mesh2.scale=mesh1.scale;  // This does not work

最后一行无效。该文档没有说明 scale 属性是只读的。我查看了源代码,发现该属性未定义为可写。文档中是否存在错误,或者这是threejs的工作方式,并且没有必要记录它:-)?

是否可以在不同的网格之间共享比例(和其他矢量)?是通过复制值来做到这一点的唯一方法

  mesh2.scale.copy(mesh1.scale);  // Copy the vector over

更新:这似乎适用于旧版本的threejs - 例如以下示例中使用的版本。是否有意禁用此功能?

【问题讨论】:

  • scale 是向量,所以你需要复制构造函数。
  • Object3D.scale 是不可变的。见stackoverflow.com/questions/26905929/…
  • @WestLangley 很好的答案-现在,如果您可以将其添加为答案(nto 作为评论),我可以接受:-)

标签: javascript three.js


【解决方案1】:

Object3Dpositionrotationquaternionscale 属性是不可变的。

查看源代码文件Object3D.js

例如,您不能再使用以下模式:

object.scale = vector;

相反,您必须使用任一

object.scale.set( x, y, z );

object.scale.copy( vector );

对于提到的其他属性也是如此。

three.js r.72

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 2023-03-11
    • 1970-01-01
    • 2018-10-18
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多