三个JS:如何使用PNG纹理将Point Light添加到场景中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三个JS:如何使用PNG纹理将Point Light添加到场景中?相关的知识,希望对你有一定的参考价值。

我有一个带有PNG纹理网格的场景。我从ThreeJS example获取了PointLight代码并添加到我的项目中:

 var intensity = 15;
 var pointLight = new THREE.PointLight( color, intensity, 20 );
 pointLight.castShadow = true;
 pointLight.shadow.camera.near = 1;
 pointLight.shadow.camera.far = 60;
 pointLight.shadow.bias = - 0.005; 

但我在网格上看不到光影:

no light and shadows on mesh

我创建了一个codepen来重现这个案例

我该如何解决这个问题?

答案

你的笔有多个问题:

  • 您必须告诉渲染器全局启用阴影贴图,如下所示: renderer.shadowMap.enabled = true
  • 你必须告诉挤压形状接收阴影: mesh.receiveShadow = true;
  • 挤压形状在你的笔中使用MeshBasicMaterial。这是一种未点亮的材料,这意味着它不会对灯光起反应。下面的codepen现在使用MeshPhongMaterial。您可能需要考虑添加环境光或半球光,以便网格的所有部分都亮起。

Codepen:https://codepen.io/anon/pen/vPPJxW?editors=1010

three.js R102

以上是关于三个JS:如何使用PNG纹理将Point Light添加到场景中?的主要内容,如果未能解决你的问题,请参考以下文章

三个js中的纹理没有更新

THREE.js FBXLoader 将 .png 视为 .psd,并且不加载素材

Three.js png 纹理 - alpha 呈现为白色而不是透明

将模型从 Blender 导出到 Three.js 时没有纹理

如何在 OpenGL ES 2.0 中使用 png 图像纹理立方体?

三个js facevertex uv map三角形:如何仅缩放1个方向