gpt4 book ai didi

three.js - 为什么环境光在这个例子中不起作用?

转载 作者:行者123 更新时间:2023-12-05 01:00:58 24 4
gpt4 key购买 nike

在以下示例中,环境光不工作(一切都是黑色的)。为什么会这样?我该如何解决?如果我放聚光灯,它会起作用,所以环境光一定有问题,但我按照文档... =:O

<html>
<head>
<title>My first three.js app</title>
<style>
body { margin: 0; }
canvas { width: 100%; height: 100% }
</style>
</head>
<body>
<script src="js/three.js"></script>
<script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );

var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );

var geometry = new THREE.BoxGeometry( 1, 1, 1 );

material = new THREE.MeshStandardMaterial( {
color: 0x0c79bf,
roughness: 0.71,
metalness: 1,
normalScale: new THREE.Vector2( 1, - 1 ), // why does the normal map require negation in this case?
side: THREE.DoubleSide
} );


var cube = new THREE.Mesh( geometry, material );
scene.add( cube );

var alight = new THREE.AmbientLight( 0x404040);
scene.add( alight );

camera.position.z = 5;

var animate = function () {
requestAnimationFrame( animate );

cube.rotation.x += 0.01;
cube.rotation.y += 0.01;

renderer.render(scene, camera);
};

animate();
</script>
</body>
</html>

最佳答案

three.js 中的环境光是一种由 Material 漫反射的间接光的简单模型。

在您的示例中,您已将 Material metalness 属性设置为 1;也就是说,您正在为纯金属建模。纯金属不会漫反射光——它们只会镜面反射光。

使用 MeshStandardMaterial 时,您应始终指定环境贴图 (material.envMap),以便您的金属 Material 有一些反射(reflect)。

three.js r.89

关于three.js - 为什么环境光在这个例子中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48037763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com