根据THREE.DirectionalLight的文档:
这种光的行为就好像它是无限远的,而且它产生的光线都是平行的。
但是,我发现作为一个移动的物体是THREE.MeshStandardMaterial远离光线(但保持相同的相对角度),光线的强度会降低。这对我来说似乎不对。
var canvas = document.createElement("canvas");
document.body.appendChild(canvas);
var dpr = window.devicePixelRatio;
var renderer = new THREE.WebGLRenderer({canvas: canvas, antialias: true});
renderer.setPixelRatio(dpr);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0);
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
camera.position.z = 700;
var planeGeom = new THREE.PlaneGeometry(200, 200);
var plane = new THREE.Mesh(planeGeom, new THREE.MeshStandardMaterial({color: 0xff00ff, metalness: 1}));
plane.position.z = -10;
scene.add(plane);
var light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(-50, 50, 100);
scene.add(light);
var helper = new THREE.DirectionalLightHelper(light, 10);
scene.add(helper);
function update(time) {
plane.position.x = 200 * Math.sin(time);
plane.position.y = 200 * Math.cos(time/2);
}
function render() {
requestAnimationFrame(render);
update(performance.now() / 1000);
renderer.render(scene, camera);
}
render();

body {
margin: 0;
padding: 0;
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/86/three.min.js"></script>
&#13;
我希望无论飞机在什么位置都能点亮飞机。我做错了什么?
答案 0 :(得分:3)
您正在使用MeshStandardMaterial
并将metalness
设置为1。
金属主要反映出来;反射的漫反射成分很小。
所以你所看到的是#34;热点&#34;反思。例如,将metalness
设置为零,您将主要看到漫反射。
此外,使用MeshStandardMaterial
时,您应该包含一个环境贴图(material.envMap
),以便有所反映。材料 - 特别是金属 - 看起来会好得多。
three.js r.87