12. Threejs案例-绘制颜色渐变圆柱体

12. Threejs案例-绘制颜色渐变圆柱体

实现效果

效果

知识点

CylinderGeometry (圆柱缓冲几何体)

一个用于生成圆柱几何体的类。

构造器

CylinderGeometry(radiusTop : Float, radiusBottom : Float, height : Float, radialSegments : Integer, heightSegments : Integer, openEnded : Boolean, thetaStart : Float, thetaLength : Float)

参数类型描述
radiusTopFloat圆柱的顶部半径,默认值是1。
radiusBottomFloat圆柱的底部半径,默认值是1。
heightFloat圆柱的高度,默认值是1。
radialSegmentsInteger圆柱侧面周围的分段数,默认为32。
heightSegmentsInteger圆柱侧面沿着其高度的分段数,默认值为1。
openEndedBoolean指明该圆锥的底面是开放的还是封顶的。默认值为false,即其底面默认是封顶的。
thetaStartFloat第一个分段的起始角度,默认为0。
thetaLengthFloat圆柱底面圆扇区的中心角,默认值是2*Pi。

MeshNormalMaterial (法线网格材质)

一种把法向量映射到RGB颜色的材质。

构造器

MeshNormalMaterial(parameters : Object)

参数类型描述
parametersObject用于定义材质外观的对象
属性
bumpMap : Texture

用于创建凹凸贴图的纹理。
黑色和白色值映射到与光照相关的感知深度。
凹凸实际上不会影响对象的几何形状,只影响光照。
如果定义了法线贴图,则将忽略该贴图。

bumpScale : Float

凹凸贴图会对材质产生多大影响。
典型范围是 0-1
默认值为 1

displacementMap : Texture

位移贴图会影响网格顶点的位置,与仅影响材质的光照和阴影的其他贴图不同,移位的顶点可以投射阴影,阻挡其他对象,以及充当真实的几何体。
位移纹理是指:网格的所有顶点被映射为图像中每个像素的值 (白色是最高的) ,并且被重定位。

displacementScale : Float

位移贴图对网格的影响程度 (黑色是无位移,白色是最大位移) 。
如果没有设置位移贴图,则不会应用此值。
默认值为 1

displacementBias : Float

位移贴图在网格顶点上的偏移量。
如果没有设置位移贴图,则不会应用此值。
默认值为 0

flatShading : Boolean

定义材质是否使用平面着色进行渲染。
默认值为 false

normalMap : Texture

用于创建法线贴图的纹理。
RGB 值会影响每个像素片段的曲面法线,并更改颜色照亮的方式。
法线贴图不会改变曲面的实际形状,只会改变光照。

normalMapType : Integer

法线贴图的类型。
选项为 THREE.TangentSpaceNormalMapTHREE.ObjectSpaceNormalMap
默认值是 THREE.TangentSpaceNormalMap

normalScale : Vector2

法线贴图对材质的影响程度。
典型范围是 0-1
默认值是 Vector2 设置为 (1,1)

wireframe : Boolean

将几何体渲染为线框。
默认值为 false (即渲染为平滑着色) 。

wireframeLinewidth : Float

控制线框宽度。
默认值为 1

代码

<!DOCTYPE html>
<html lang="zh">
<head><title></title><meta charset="UTF-8"><script src="ThreeJS/three.js"></script><script src="ThreeJS/jquery.js"></script>
</head>
<body>
<div id="myContainer"></div>
<script>// 创建一个WebGL渲染器实例,并开启抗锯齿处理const myRenderer = new THREE.WebGLRenderer({antialias: true});// 设置渲染器的大小为窗口的宽度和高度myRenderer.setSize(window.innerWidth, window.innerHeight);// 设置渲染器的背景颜色为白色myRenderer.setClearColor('white', 1.0);// 将渲染器的DOM元素 (即canvas元素) 添加到ID为"myContainer"的HTML元素中$("#myContainer").append(myRenderer.domElement);// 创建一个透视相机,设置其视野角度、长宽比、近裁剪面和远裁剪面const myCamera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight, 0.1, 1000);// 设置相机的初始位置myCamera.position.set(400, 300, 200);// 使相机朝向场景的原点myCamera.lookAt(new THREE.Vector3(0, 0, 0));// 创建一个新的Three.js场景const myScene = new THREE.Scene();// 创建一个圆台几何体,设置其底面半径、顶面半径、高度和分段数const myGeometry = new THREE.CylinderGeometry(40, 80, 100, 150, 20);// 创建一个法线材质,用于显示几何体的原始表面纹理const myMaterial = new THREE.MeshNormalMaterial();// 使用几何体和材质创建一个新的网格 (Mesh) 对象,即圆台模型const myMesh = new THREE.Mesh(myGeometry, myMaterial);// 在X、Y和Z方向上放大几何体 (圆台) 的大小,使其变为原来的两倍大小myMesh.scale.set(2, 2, 2);// 将圆台模型添加到场景中myScene.add(myMesh);// 开始渲染动画,不断地更新和渲染场景animate();function animate() {// 使用渲染器将场景和相机渲染到屏幕上,并显示圆台模型myRenderer.render(myScene, myCamera);// 请求下一帧动画,实现动画的循环播放效果requestAnimationFrame(animate);}
</script>
</body>
</html>

演示链接

示例链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/452284.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录Git无法连接Github(443报错)的一种可能——代理问题

参考文章&#xff1a; Git安装配置与使用&#xff08;超级详细&#xff09;_git配置-CSDN博客 github代理报错_valueerror: unable to determine socks version from-CSDN博客 速通 如果在使用 git 时遇到了这样的报错&#xff1a; OpenSSL SSL_connect: SSL_ERROR_SYSCAL…

python Flask 写一个简易的 web 端程序(附demo)

python Flask 写一个简易的 web 端程序 &#xff08;附demo&#xff09; 介绍简单介绍装饰器 app.route("/") 进阶增加接口设置端口 静态网页核心代码完整代码 介绍 Flask 是一个用于构建 Web 应用程序的轻量级 Python Web 框架。它设计简单、易于学习和使用&#x…

MySQL学习记录——삼 库的操作

文章目录 1、创建数据库2、字符集和校验集3、基本操作4、备份与恢复5、连接情况 1、创建数据库 开两个窗口&#xff0c;一个用来访问数据目录/var/lib/mysql&#xff0c;一个用来打开mysql&#xff1a;mysql -u root -p。 创建用的命令 create databse d1; d1是名字&#xff…

LeetCode--代码详解 2.两数相加

2.两数相加 题目 难度&#xff1a;中等 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数…

认识Tomcat (一)

认识Tomcat &#xff08;一&#xff09; 一、服务器 1.1 服务器简介 ​ 硬件服务器的构成与一般的PC比较相似&#xff0c;但是服务器在稳定性、安全性、性能等方面都要求更高&#xff0c;因为CPU、芯片组、内存、磁盘系统、网络等硬件和普通PC有所不同。 ​ 软件服务器&…

PAT-Apat甲级题1007(python和c++实现)

PTA | 1007 Maximum Subsequence Sum 1007 Maximum Subsequence Sum 作者 CHEN, Yue 单位 浙江大学 Given a sequence of K integers { N1​, N2​, ..., NK​ }. A continuous subsequence is defined to be { Ni​, Ni1​, ..., Nj​ } where 1≤i≤j≤K. The Maximum Su…

WordPress可以做企业官网吗?如何用wordpress建公司网站?

我们在国内看到很多个人博客网站都是使用WordPress搭建&#xff0c;但是企业官网的相对少一些&#xff0c;那么WordPress可以做企业官网吗&#xff1f;如何用wordpress建公司网站呢&#xff1f;下面boke112百科就跟大家简单说一下。 WordPress是一款免费开源的内容管理系统&am…

算法学习打卡day47|单调栈系列题目

单调栈题目思路 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了。时间复杂度为O(n)。单调栈的本质是空间换时间&#xff0c;因为在遍历的过程中需要用一个栈来记录右边第一个比当前元…

力扣面试150 只出现一次的数字Ⅱ 哈希 统计数位 DFA有穷自动机

Problem: 137. 只出现一次的数字 II 文章目录 思路&#x1f496; 哈希&#x1f496; 位数统计&#x1f496; DFA 状态机 思路 &#x1f468;‍&#x1f3eb; 参考 &#x1f496; 哈希 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) cl…

5分钟快速掌握 XML (Extensible Markup Language)

背景 在Java开发的过程中&#xff0c;我们经常需要和配置文件打交道&#xff0c;其中接触最多的就是XML。从最初学习 JavaWeb 时在 Tomcat 中配置servlet&#xff0c;到后来接触Spring框架并在XML中编写各种配置&#xff0c;XML一直是不可或缺的一部分。然而&#xff0c;XML的…

Swift 入门之自定义类型的模式匹配(Pattern Matching)

概览 小伙伴们都知道 Swift 是一门简洁、类型安全、极富表现力以及“性感迷人”的编程语言。 和大多数语言一样&#xff0c;在 Swift 中也有一些隐藏着的、不为人知的宝藏特性。利用它们我们可以极大增加撸码的愉悦和成就感。 其中&#xff0c;模式匹配&#xff08;Pattern …

VmwareWorkstationPro17安装Centos

保存到之前创建的文件夹里&#xff0c;和主机放在一起就好 接下来直接安装就好了