gpt4 book ai didi

three.js - 使用 three.js 渲染图形时未生成具有 Mesh Lambert Material 的对象

转载 作者:行者123 更新时间:2023-12-04 12:21:23 27 4
gpt4 key购买 nike

好吧,我刚开始学习three.js,这对我来说完全是全新的。所以我正在写这些系列的 hello world 有点像脚本。好吧,我编写了下面的脚本来使用 MeshBasicMaterial 生成一个立方体(这只是博客中给出的教程的精确副本)

        var scene = new THREE.Scene(); 
var camera = new THREE.PerspectiveCamera(75, 640/340, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();

renderer.setSize(640, 340);
document.body.appendChild(renderer.domElement);

var geometry = new THREE.CubeGeometry(1,1,1);
var material = new THREE.MeshBasicMaterial({color: 0xD43001});
var cube = new THREE.Mesh(geometry, material);


scene.add(cube);
camera.position.z = 5;

var render = function (){

requestAnimationFrame(render);

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

renderer.render(scene, camera);

};

render();

当我将立方体的 Material 从
var material = new THREE.MeshBasicMaterial({color: 0xD43001});


var material = new THREE.MeshLambertMaterial({color: 0xD43001});

什么都没有显示。我到底错过了什么?

更新

所以我不得不添加一个光源来显示一个由网状朗伯 Material 制成的物体。当我添加一个点光源时,这个物体就会被显示出来。

最佳答案

这是因为 MeshBasicMaterial 不会对光照使用react,但具有恒定的颜色。

然而,MeshLambertMaterial 确实 对光照有反应,所以没有光照,你看不到它! MeshPhongMaterial 也是如此。

关于three.js - 使用 three.js 渲染图形时未生成具有 Mesh Lambert Material 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215585/

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