3

問題 :

メッシュを作成してクローンを作成しました。どちらかを選択しようとすると、両方が選択されます。メッシュの ID は異なりますが、マテリアル ID とジオメトリ ID は同じです。

簡単な jsfiddle の例を作成しました: jsfiddle

クローン方法:

var cloned =  object.clone(); 

また

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

どちらの場合も結果は同じで、1 つをクリックすると両方が選択されます。マテリアル 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()ですか?

同じマテリアルで多くのメッシュを作成すると、同じ動作になります。1 つのメッシュ上でマウス ダウンすると、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);
}
4

1 に答える 1

3

どちらかを選択しようとすると、両方が選択されます。

そうではありません。1 つだけが選択されていますが、両方が強調表示されています。

メッシュのクローンを作成すると新しいメッシュが作成されますが、新しいメッシュは元のメッシュとマテリアル (およびジオメトリ) を共有します。

したがって、デモでは、両方のメッシュが共有するマテリアルのインスタンスが 1 つしかありません。

これが、1 つのメッシュの色を変更すると、他のメッシュも変更される理由です。

于 2013-03-14T22:46:17.577 に答える