When executing the following code, there are times when colorWrite is set to false and times when it is not. I want to ensure that colorWrite is always set to false . If anyone knows how to achieve this, could you please share your advice?
const loadGLB = new Promise((resolve, reject) => {
gltfLoader.load(staticPath + ‘/booth2/OutlineModel.glb’, (gltf) => {
outlineModel = gltf.scene;
scene.add(outlineModel);
outlineModel.traverse(child => {
if (child.isMesh && child.material) {
// マテリアルが配列の場合と単一の場合の両方に対応
const materials = Array.isArray(child.material) ? child.material : [child.material];
materials.forEach(material => {
material.colorWrite = false;
});
}
});
// カメラの個数を調べる
const cameraObjects = gltf.scene.children.filter(child => child.name.startsWith('Camera'));
// カメラの位置を配列に入れる
for(let i = 0; i < cameraObjects.length; i++){
cameraPositions.push(cameraObjects[i].position)
}
camera_position = cameraPositions[0]
camera.position.copy(camera_position)
// レイキャストの対象を作成する
raycast_object = []
// cameraObjectsのy軸が0のところにカーソルポイントを置く
for (let i = 0; i < cameraObjects.length; i++) {
let geometry = new THREE.CircleGeometry(0.4, 32);
let material = new THREE.MeshBasicMaterial({color: 0xffff00, transparent: true, opacity: 1});
let circle = new THREE.Mesh(geometry, material);
circle.position.set(cameraObjects[i].position.x, 0, cameraObjects[i].position.z)
// サークル裏向いてたんだろうな
circle.rotation.x = -1 * (Math.PI / 2);
circle.name = "Camera" + i
circles.push(circle)
raycast_object.push(circle)
scene.add(circle);
}
outlineModel.traverse(child =>{
if(!child.name.includes("Camera") && !child.name.includes("_") && !child.name.includes("Scene")){
raycast_object.push(child)
}
})
resolve(camera_position);
}, undefined, function(error) {
reject(error); // エラーが発生した場合はrejectを呼び出す
});
});