Three.js光照贴图添加阴影(·lightMap)

本文是Three.js电子书的8.7节

在三维场景中有时候需要设置模型的阴影,也就是阴影贴图或者说光照贴图·lightMap,一般Threejs加载外部模型的光照贴图·lightMap,三维模型加载器可以自动设置,不需要程序员通过代码去设置,不过为了让大家更好理解光照贴图·lightMap,这里就通过Three.js代码设置场景模型的阴影贴图·lightMap

//创建一个平面几何体作为投影面
var planeGeometry = new THREE.PlaneGeometry(300, 200);planeGeometry.faceVertexUvs[1] = planeGeometry.faceVertexUvs[0];
var textureLoader = new THREE.TextureLoader();
// 加载光照贴图
var textureLight = textureLoader.load('shadow.png');
var planeMaterial = new THREE.MeshLambertMaterial({color: 0x999999,lightMap:textureLight,// 设置光照贴图// lightMapIntensity:0.5,//烘培光照的强度. 默认 1.
});
var planeMesh = new THREE.Mesh(planeGeometry, planeMaterial); //网格模型对象Mesh
...

课程5.2节设置模型的阴影是通过实时计算得到的,而光照贴图·lightMap是3D美术渲染好提供给程序员。这两种方式相比较通过贴图的方式更为节约资源,提高渲染性功能。

Geometry属性.faceVertexUvs

一般几何体有两套UV坐标,对于Geometry类型几何体而言

Geometry.faceVertexUvs[0]包含的纹理坐标用于颜色贴图map、法线贴图normalMap等,Geometry.faceVertexUvs[1]包含的第二套纹理贴图用于光照阴影贴图

一般通过Threejs几何体API创建的几何体默认只有一组纹理坐标Geometry.faceVertexUvs[0],所以为了设置光照阴影贴图,需要给另一组纹理坐标赋值Geometry.faceVertexUvs[1] = Geometry.faceVertexUvs[0];

BufferGeometry属性.uv.uv2

一般通过Threejs加载外部模型,解析三维模型数据得到的几何体类型是缓冲类型几何体BufferGeometry,对于BufferGeometry而言两套纹理坐标分别通过.uv.uv2属性表示。

geometry.attributes.uv2 = geometry.attributes.uv;

Three.js光照贴图添加阴影(·lightMap)相关推荐

  1. 使用预计算实时全局光照优化照明-微调光照贴图参数

    本文地址:https://blog.csdn.net/t163361/article/details/124107784 翻译说明: 教程翻译主要用谷歌翻译后,对特别不通顺的地方进行了微调.同时针对一 ...

  2. unity android光照贴图格式,光照贴图参数

    Lightmapping Quickstart 光照贴图定向模式 光照贴图参数 The Lightmap Parameters Asset is used to store a set of valu ...

  3. Unity3D技术之深入了解光照贴图详解

    2019独角兽企业重金招聘Python工程师标准>>> 深入了解光照贴图 如果是第一次接触 Unity 中的光照贴图,本快速入门指南将对您有所帮助. 光照贴图完全集成到 Unity ...

  4. Unity项目运行时动态更新光照贴图 | LightMap

    Unity项目运行时动态更新烘培的光照贴图 动态更新烘培的光照贴图 场景的物件没有发生变化(也就是说没有运行时加载在场景上的Prefab) 场景的烘培贴图已经更新,但是有些物件prefab想运行时加载 ...

  5. OpenGL Lightmap光照贴图的实例

    OpenGL Lightmap光照贴图 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include <glad/glad.h> #include ...

  6. UWA学堂专栏推荐:光照贴图Lightmap初探

    这也许是目前国内对lightmap(光照贴图)总结最全面的文章了,作者钱康来,毕业于清华大学CG/CAD实验室,主要研究方向为计算机图形学,多年工作经验横跨Unity.Cocos.unreal多个游戏 ...

  7. d3 svg path添加文本_D3.js 力导向图的显示优化

    D3.js 作为一个前端,说到可视化除了听过 D3.js 的大名,常见的可视化库还有 ECharts.Chart.js,这两个库功能也很强大,但是有一个共同特点是封装层次高,留给开发者可设计和控制的部 ...

  8. Blender烘焙Lightmap光照贴图

    1.创建场景中的物体 2.取得UV展开图 2.1 创建新窗口 保持物体模式 -> 鼠标左键选中一个物体 -> 通过Shift+鼠标左键依次选中场景内将要被贴图烘焙的物体(或从右侧大纲视图中 ...

  9. redius在php中的使用,HTML_使用css给图片添加阴影入门篇,一般我们可以使用背景图的方 - phpStudy...

    使用css给图片添加阴影入门篇 一般我们可以使用背景图的方式给图片添加阴影,但对于不固定尺寸的图片如何实现呢? 我们可以采取"视觉欺骗大法"--定义渐变边框来实现 a href=& ...

最新文章

  1. 如何用Pandas处理文本数据?
  2. S5PV210开发 -- 交叉编译器
  3. 老生常谈,正确使用memset
  4. [BOI2007] Mokia
  5. 计算机的科学原理是什么,人工智能的工作原理是什么?
  6. svn中文语言包安装(最详细步骤)+Language Pack+TortoiseSVN 安装
  7. android_secure写权限,android.permission.WRITE_SECURE_SETTINGS权限报错
  8. 13.SpringMVC核心技术-异常处理
  9. c语言遍历字节,C语言遍历结构体
  10. HashMap的工作原理深入再深入
  11. 小米台灯突然自己亮了_米家台灯Pro,工作读书随我选
  12. 信息化为五万教学点带来“优质教师”
  13. win10 查看电脑mac 地址和ip
  14. 苹果电池显示维修_iPhone电池健康显示“维修”的原因和解决办法
  15. 七牛上传图片初探 开始上传 暂停上传 继续上传
  16. Unity GL画线的坑
  17. Apple 软件产品使用的 TCP 和 UDP 端口
  18. 用vs2017写php,windows下开发php7.2拓展,vs2017
  19. 浪潮服务器还原备份系统,一键GHOST系统数据手动还原备份的妙用的方法(上)...
  20. 对指针变量取地址意义

热门文章

  1. 时代周刊评选的让你拥有健康,快乐的20件事
  2. ARM开发板移植lsusb命令
  3. 最火的Android开源项目整理
  4. 【解救ROS】ubuntu下安装clion(含补ding传送门)
  5. 从校园到职场 | YK菌的2022年中总结
  6. C#的多线程(2)之二
  7. 信息学奥赛一本通T1453:移动玩具
  8. vue 脚手架 图片预加载
  9. Knockout绑定语法
  10. 零基础Python完全自学教程15:Python中的列表