Threejs使用LOD根据摄像机距离物体的距离显示不同的物体
1,介绍
该示例使用的是 r95版本Three.js库。
主要实现功能:多细节层次 —— 在显示网格时,根据摄像机距离物体的距离,来使用更多或者更少的几何体来对其进行显示。
效果图如下:
2,动画主要说明
多细节层次(LOD,Levels of Detail)
多细节层次 —— 在显示网格时,根据摄像机距离物体的距离,来使用更多或者更少的几何体来对其进行显示。
每一个级别都和一个几何体相关联,且在渲染时,可以根据给定的距离,来在这些级别对应的几何体之间进行切换。 通常情况下,你会创建多个几何体,比如说三个,一个距离很远(低细节),一个距离适中(中等细节),还有一个距离非常近(高质量)。
LOD – three.js中文文档 (yanhuangxueyuan.com)
如下代码添加物体到场景中时,使用LOD进行添加并设置可见距离
var lod = new THREE.LOD();// 创建一个基础材质的立方体
function createBoxGeometryBasicMaterialImg() {var texture = THREE.ImageUtils.loadTexture("assets/textures/brick-wall.jpg");var mat = new THREE.MeshPhongMaterial();mat.map = texture;// 创建一个立方体并设置大小var cubeGeometry = new THREE.BoxGeometry(8, 8, 8);var cube = new THREE.Mesh(cubeGeometry, mat);// 设置立方体位置cube.position.x = -10;cube.position.y = 3;cube.position.z = 0;return cube;
}// 创建一个基础材质的立方体
function createBoxGeometryBasicMaterial() {// 创建一个立方体并设置大小var cubeGeometry = new THREE.BoxGeometry(14, 14, 4);// MeshBasicMaterial(基础材质不会对光源有反应只会使用指定的颜色渲染)var cubeMaterial = new THREE.MeshBasicMaterial({color: 0xff0000,});var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);// 设置立方体位置cube.position.x = -5;cube.position.y = 10;cube.position.z = -30;return cube;
}// 创建一个球形几何体
function createSphereGeometryLambertMaterial() {var textureLoader = new THREE.TextureLoader();// 创建一个球体var sphereGeometry = new THREE.SphereGeometry(4, 20, 20);var cubeMaterial = new THREE.MeshStandardMaterial({map: textureLoader.load("assets/textures/brick-wall.jpg"),});// cubeMaterial.map.wrapS = THREE.RepeatWrapping;// cubeMaterial.map.wrapT = THREE.RepeatWrapping;var sphere = new THREE.Mesh(sphereGeometry, cubeMaterial);// 位置范围sphere.position.x = 20;sphere.position.y = 4;sphere.position.z = 2;return sphere;
}// 将立方体添加到场景中
var cube = createBoxGeometryBasicMaterial();
lod.addLevel(cube, 200);// 将立方体添加到场景中
var cube_img = createBoxGeometryBasicMaterialImg();
lod.addLevel(cube_img, 100);// 将球体添加到场景中
var sphere = createSphereGeometryLambertMaterial();
lod.addLevel(sphere, 300);scene.add(lod);function renderScene() {orbit.update();lod.update(camera)// 使用requestAnimationFrame函数进行渲染renderer.render(scene, camera);requestAnimationFrame(renderScene);
}
需要学习案例、素材、模型,请进入博客首页查看其他文章或者留言
在线预览:左本的博客 (zuoben.top)
Threejs使用LOD根据摄像机距离物体的距离显示不同的物体相关推荐
- threejs 物体根据相机位置显示_Threejs学习笔记(一) 基础篇
基本概念 此学习笔记主要记录使用threejs的制作http://sqace.163.com网站中用到的API和相关知识点. 一个完整的3D环境包含以下元素: 1.场景(Scene):是物体.光源等元 ...
- 【Unity3D】游戏物体操作 ① ( 场景简介 | 添加游戏物体 | 操作游戏物体 | 选中游戏物体 | 场景显示效果缩放 | 重命名游戏物体 | 复制游戏物体 | 删除游戏物体 | 移动物体 )
文章目录 一.Scene 场景简介 二.添加游戏物体 三.操作游戏物体 1.选中游戏物体 2.场景显示效果缩放 3.重命名游戏物体 4.复制游戏物体 5.删除游戏物体 6.Inspector 检查器窗 ...
- 数据科学中常见的9种距离度量方法,包括欧氏距离、切比雪夫距离、半正矢距离等
1.欧氏距离(Euclidean Distance) 欧式距离可解释为连接两个点的线段的长度.欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离. 代码实现: import numpy a ...
- 学习笔记5——距离度量(欧氏距离、马氏距离、闵氏距离、曼哈顿距离等)
参考:深度学习中常用的几种距离度量算法 - 简书 (jianshu.com) 常见的9种距离度量方法-电子发烧友网 (elecfans.com) 1.欧氏距离 欧式距离并不是尺度不变的,因此所计算的 ...
- 【Unity3D】物体、材质的设置、物体位移与旋转
Unity3D和Flash一样,甚至可以说是和C#一样,拖完组件,再写一系列的脚本,完成编程,甚至可以说,就是带编程脚本的3DSMAX.那么如何完成最基本的物体.材质的设置.物体位移与旋转呢?下面用一 ...
- 【Unity3D自学记录】NGUI之显示2D游戏物体的名字
http://www.unitymanual.com/thread-14635-1-1.html 用NGUI 显示游戏物体的名字,当然也可以显示物体的血条 状态信息 最终效果 第一步 首先找到场景中的 ...
- 曼哈顿距离和切比雪夫距离链接
存一下链接慢慢看 曼哈顿距离和切比雪夫距离 这个更清晰一些: 关于曼哈顿距离和切比雪夫距离 NN中常用的距离计算公式:欧式距离.曼哈顿距离.马氏距离.余弦.汉明距离
- 余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景?
余弦距离(Cosine距离)与编辑距离分别是什么?各有什么优势和使用场景? import numpy as np from sklearn.metrics import pairwise_distan ...
- 2个点马氏距离计算实例_数据分析基础:距离度量方式(欧式距离、马氏距离、曼哈顿距离)...
数据分析中,为了评定数据之间的相似度,有很多不同的距离的计算方法,如欧氏距离,马氏距离等等. 欧氏距离 Euclidean distance:欧几里得距离,m维空间中两个点之间的真实距离 离差平方和, ...
最新文章
- 参加Java培训需要注意哪些
- 深入剖析 RocketMQ 源码 - 消息存储模块
- gitlab8.2-8.16-8.17-9.0升级
- java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答
- spring注解注入属性
- Python练习2-基本聊天程序-虚拟茶会话
- JSPServlet学习笔记----第4章
- SQL with(nolock)详解
- 为什么安装了Microsoft .NET Framework 4之后我的电脑网卡启动会变得很慢很慢。。...
- L3-020 至多删三个字符 [DP]
- 任正非:做芯片砸钱不行 得砸数学家、物理学家、化学家
- 一个项目工程的重构小结
- 95-190-035-源码-window-Time Window 实现
- [CLR via C#]18. Attribute
- 黑马程序员 Python学习笔记之PyCharm 的初始设置
- 2022新UI聚合支付系统四方源码下载+升级修复漏洞完美版
- 计算机专业为职业环境分析,2021年计算机职业环境分析报告|计算机职业环境分析-得范文网...
- 10个免费网页统计与分析工具
- 什么是生产流程管理系统?
- 环境实验耐高温、耐低温、温度变化、恒定湿热、湿热循环
热门文章
- 老年高血压案(知老)
- 基于Python(Django)+MySQL实现(Web)大学生信用评价系统分析与设计【100010400】
- java程序设计答案电子工业出版社_java 语言程序设计(机械工业出版社)课后习题答案 - 下载 - 搜珍网...
- win98计算机系统硬件配置,Windows98操作系统优化实战(1) -电脑资料
- Mybatis之关联关系映射
- 新浪微博自动转发评论 源码 按键精灵实现 详细注释 几十行代码实现 涉及图像识别模拟键盘鼠标
- Sentinel-限流 冷启动
- R12供应商银行账户SQL
- excel两个字符串相减_Excel技巧—超实用的字符串拆分小技巧
- 帝国CMS采集-帝国自动采集-帝国CMS免登录发布插件