簡體   English   中英

如何在three.js中訪問場景元素

[英]How to visit the elements of the scene in three.js

我想訪問場景中的所有元素。 這些元素是類型為THREE.Object3D,THREE.Mesh的對象。 一些元素具有一個稱為children的字段,這是其他元素的數組。 因此,我們可以得出結論,場景(也有children字段)是一棵樹。

有了這些知識,我想對場景對象中存在的每個元素進行深度優先搜索訪問,以設置一些屬性。 這是我的代碼:

function setShadowRenderer( element ) {

   element.receiveShadow = true;
   element.castShadow = true;

   if ( element.children !== undefined ||
      element.children !== [] )
      for ( i = 0; i < element.children.length; i++ )
        setShadowRenderer( element.children[ i ] );

    console.log( C++ );
}

現在,這段代碼導致了無限的計算,它永遠不會結束。 這怎么可能?

我認為這可以完成您想要的工作:

if (object instanceof THREE.Object3D)
{
    object.traverse (function (mesh)
    {
        if (! (mesh instanceof THREE.Mesh)) return;

        mesh.castShadow = true;
        mesh.receiveShadow = true;

    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM