Three.js - 阴影在立方体上渲染但不在导入的 json 网格上渲染 object
Three.js - shadows rendering on cube but not on imported json mesh object
我想让我的赛车在地板上投下阴影。阴影来自立方体(立方体正在投射阴影),但赛车(进口 json 网格 object)没有投射阴影。我怎样才能让赛车投下阴影?这与材料上的 json 文件烘焙有关吗?代码 obj.castShadow = true;
是否真的需要在 obj 的 child 上进行?在这种情况下,哪个child?我在这里做错了什么?
Here's the json file and Here's a link to a demo
相关代码如下:
var loader = new THREE.ObjectLoader();
loader.load("models/ferrari-f1-race-car.json", function (obj) {
obj.castShadow = true;
obj.scale.set(50,50,50);
obj.position.x = 30;
obj.rotation.y = Math.PI/1;
scene.add (obj);
});
boxgeometry = new THREE.BoxGeometry(100, 100, 100);
boxmaterial = new THREE.MeshLambertMaterial({
color: 0x0aeedf
});
var cube = new THREE.Mesh(boxgeometry, boxmaterial);
cube.castShadow = true;
cube.position.x = -80;
cube.position.y = 50;
cube.position.z = 0;
scene.add(cube);
function createFloor(){
floor = new THREE.Mesh(new THREE.PlaneBufferGeometry(1000,500), new THREE.MeshBasicMaterial({color: 0x8594a2}));
floor.rotation.x = -Math.PI/2;
floor.position.y = -0;
floor.castShadow = false;
floor.receiveShadow = true;
scene.add(floor);
}
投射阴影成本高昂且在自定义对象上没有得到很好的支持,经常出现错误。
最好的解决办法是在汽车下方的透明平面上绘制阴影纹理。如果您需要旋转汽车或灯光并需要精确的阴影,这可能是个问题,因为纹理不会随角度改变。由作者使用技巧(旋转相机或使用更多有偏差的阴影)。这仍然可以提供很棒的效果图,检查 http://helloracer.com/racer-s/ 和使用的简单图像:
更令人印象深刻:
我想让我的赛车在地板上投下阴影。阴影来自立方体(立方体正在投射阴影),但赛车(进口 json 网格 object)没有投射阴影。我怎样才能让赛车投下阴影?这与材料上的 json 文件烘焙有关吗?代码 obj.castShadow = true;
是否真的需要在 obj 的 child 上进行?在这种情况下,哪个child?我在这里做错了什么?
Here's the json file and Here's a link to a demo
相关代码如下:
var loader = new THREE.ObjectLoader();
loader.load("models/ferrari-f1-race-car.json", function (obj) {
obj.castShadow = true;
obj.scale.set(50,50,50);
obj.position.x = 30;
obj.rotation.y = Math.PI/1;
scene.add (obj);
});
boxgeometry = new THREE.BoxGeometry(100, 100, 100);
boxmaterial = new THREE.MeshLambertMaterial({
color: 0x0aeedf
});
var cube = new THREE.Mesh(boxgeometry, boxmaterial);
cube.castShadow = true;
cube.position.x = -80;
cube.position.y = 50;
cube.position.z = 0;
scene.add(cube);
function createFloor(){
floor = new THREE.Mesh(new THREE.PlaneBufferGeometry(1000,500), new THREE.MeshBasicMaterial({color: 0x8594a2}));
floor.rotation.x = -Math.PI/2;
floor.position.y = -0;
floor.castShadow = false;
floor.receiveShadow = true;
scene.add(floor);
}
投射阴影成本高昂且在自定义对象上没有得到很好的支持,经常出现错误。
最好的解决办法是在汽车下方的透明平面上绘制阴影纹理。如果您需要旋转汽车或灯光并需要精确的阴影,这可能是个问题,因为纹理不会随角度改变。由作者使用技巧(旋转相机或使用更多有偏差的阴影)。这仍然可以提供很棒的效果图,检查 http://helloracer.com/racer-s/ 和使用的简单图像:
更令人印象深刻: