Threejsの.objモデル投影


今日はプロジェクトをする時にthreejsの中で.obj模型の投影はgeometryの投影と少し違っています.文章を書いて記録してください.忘れないようにしてください.皆さんの助けにもなりたいです. , ^_^ ~原理:
Objモデル投影の方法は、Obj.Childrenの中の要素を遍歴して設定することである.castShadowreceiveShadow;
コアコード:
     for(k in obj.children){
        obj.children[k].castShadow = true;
        obj.children[k].receiveShadow = true;
     }
モデルの完全なコードを作成:
    //           
    function initCar(){
      var geometry, material;
      var loader = new THREE.MTLLoader();
      loader.setPath('../3d-models/');
      loader.load('car.mtl', function(material){
        material.preload();

        let objLoader = new THREE.OBJLoader();
        objLoader.setMaterials(material);
        objLoader.load('../3d-models/car.obj', function(obj){

          for(k in obj.children){
            obj.children[k].castShadow = true;
            obj.children[k].receiveShadow = true;
          }
          // obj.receiveShadow = true;      //         ,     geometry   
          // obj.castShadow = true;         //         ,     geometry   

          scene.add(obj);
        })
      })
    }
geometry投影モデルの投影コード:(みんな自分で.objコードと比較してください)
    function initCube(){
      var geometry = new THREE.BoxGeometry(20, 20, 20);
      var material = new THREE.MeshPhongMaterial({ color: 0xff3300 });
      cube = new THREE.Mesh(geometry, material);

      cube.receiveShadow = true;        //   .obj
      cube.castShadow = true;           //   .obj

      scene.add(cube)
    }
詳しく分析してみます.
つまり、モデルに影を付ける場合は、MeshオブジェクトにcastShadowおよびreceiveShadowを設定し、Objオブジェクトは複数のMeshから構成され、すべてObj.Childrenの中にあるので、Obj.Childrenを遍歴して影効果を加える必要がある.
最終効果を見てください.