【问题标题】:Select cloned mesh选择克隆的网格
【发布时间】:2013-03-14 14:45:34
【问题描述】:

问题:

我创建了一个网格并克隆了它。当我尝试选择一个时,两个都被选中。网格有不同的 id,但材质和几何体的 id 是相同的。

我创建了一个简单的 jsfiddle 示例:jsfiddle

我如何克隆:

var cloned =  object.clone(); 

或

var cloned = new THREE.Mesh(object.geometry, object.material);

在这两种情况下结果是相同的,点击一个 - 选择两者。我试图改变材料ID,没有帮助。

如果我创建新材料,那么一切都很好,我可以分别选择每个对象:

var cloned = new THREE.Mesh(object.geometry, new THREE.MeshLambertMaterial(....));

或

var cloned = new THREE.Mesh(object.geometry, object.material.clone());

我的问题。object.clone().material 和 object.material.clone()?

当我创建许多具有相同材质的网格时,也会出现相同的行为。鼠标按下一个网格将选择所有 10 个网格。示例:

var geo = new THREE.CubeGeometry(....)
var material = new THREE.MeshLambertMaterial(....)
for(var i = 0; i < 10; i++){
    var mesh = new THREE.Mesh(geo, material);
}

【问题讨论】:

    标签: three.js


    【解决方案1】:

    当我尝试选择一个时,两个都被选中。

    那不是真的。只有一个被选中,但两个都被突出显示。

    克隆网格会创建一个新网格,但新网格与原始网格共享材质(和几何形状)。

    因此,在您的演示中,您只有一个两个网格共享的材质实例。

    这就是为什么当您更改一个网格的颜色时,另一个网格也会发生变化。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 1970-01-01
      • 2019-09-02
      • 2017-10-11
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多