Three.js教程:设置Geometry顶点位置、顶点颜色数据
推荐:将NSDT场景编辑器加入你的3D工具链
其他系列工具:NSDT简石数字孪生
前面几篇文章通过缓冲类型几何体BufferGeometry给大家讲解了顶点位置、颜色、法向量、索引数据,本节课给大家引入一个新的threejs几何体APIGeometry。几何体Geometry
和缓冲类型几何体BufferGeometry
表达的含义相同,只是对象的结构不同,Threejs渲染的时候会先把Geometry
转化为BufferGeometry
再解析几何体顶点数据进行渲染。
Vector3定义顶点位置坐标数据
Vector3
是threejs的三维向量对象,可以通过Vector3
对象表示一个顶点的xyz坐标,顶点的法线向量。
几何体Geometry
的顶点位置属性geometry.vertices
和缓冲类型几何体BufferGeometry
顶点位置属性BufferGeometry.attributes.position
是对应的。
var geometry = new THREE.Geometry(); //声明一个几何体对象Geometry
var p1 = new THREE.Vector3(50, 0, 0); //顶点1坐标
var p2 = new THREE.Vector3(0, 70, 0); //顶点2坐标
var p3 = new THREE.Vector3(80, 70, 0); //顶点3坐标
//顶点坐标添加到geometry对象
geometry.vertices.push(p1, p2, p3);
Color定义顶点颜色数据
通过threejs顶点颜色对象Color
可以定义几何体顶点颜色数据,然后顶点颜色数据构成的数组作为几何体Geometry
顶点颜色属性geometry.colors
的值。
几何体Geometry
的顶点颜色属性geometry.colors
和缓冲类型几何体BufferGeometry
顶点颜色属性BufferGeometry.attributes.color
是对应的。
// Color对象表示顶点颜色数据
var color1 = new THREE.Color(0x00ff00); //顶点1颜色——绿色
var color2 = new THREE.Color(0xff0000); //顶点2颜色——红色
var color3 = new THREE.Color(0x0000ff); //顶点3颜色——蓝色
//顶点颜色数据添加到geometry对象
geometry.colors.push(color1, color2, color3);
注意设置几何体Geometry
顶点颜色属性geometry.colors
,对网格模型Mesh
是无效的,对于点模型Points
、线模型Line
是有效果。网格模型情况几何体Geometry
顶点颜色如何设置可以参考下一节课。
材质属性.vertexColors
注意使用顶点颜色数据定义模型颜色的时候,要把材质的属性vertexColors
设置为THREE.VertexColors
,这样顶点的颜色数据才能取代材质颜色属性.color
起作用。
//材质对象
var material = new THREE.MeshLambertMaterial({
// color: 0xffff00,
vertexColors: THREE.VertexColors, //以顶点颜色为准
side: THREE.DoubleSide, //两面可见
});
上一篇:Three.js教程:顶点索引复用顶点数据 (mvrlink.com)
下一篇:Three.js教程:Face3对象定义Geometry的三角形面 (mvrlink.com)
原文地址:https://www.cnblogs.com/mvrlink/p/17360432.html
- 【前沿】见人识面,TensorFlow实现人脸性别/年龄识别
- TensorFlow从0到1 - 1 - Hello, TensorFlow!
- iOS自动布局——Masonry详解
- BZOJ 3450: Tyvj1952 Easy
- [编程经验] TensorFlow实现线性支持向量机SVM
- TensorFlow从0到1 - 2 - TensorFlow核心编程
- BZOJ 4318: OSU!
- 讨厌算法的程序员 5 - 合并算法
- 洛谷 P2679 子串
- [编程经验] CVPR2017论文全集下载代码脚本分享
- 讨厌算法的程序员 6 - 归并排序
- [编程经验] Tensorflow中的共享变量机制小结
- 洛谷 P1313 计算系数
- 一文搞懂浏览器自动化测试框架selenium!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 时序数据库 InfluxDB(五)
- 太牛逼了!用 Python 实现抖音上的“人像动漫化”特效,原来这么简单!
- Web 技术:CSS最小和最大(宽度/高度)知识点及优缺点
- javascript入门到进阶 - js系列七:生命周期
- 时序数据库 InfluxDB(六)
- [058]SQLite on Android
- 【Rust日报】2020-07-15 用Rust重写FORTRAN科学软件
- 一文读懂 DEX 文件格式解析
- Guava集合--新集合类型
- 从 Node.js 到 Go
- 性能不达标,计将安出?
- Yaml 速成查询表
- 设计模式实战-策略模式,想让你的代码变幻莫测吗?
- 设计模式实战-模板模式,代码复用神器
- CSS Flexbox 布局完全指南 (二):3000字,多示例讲解