threejs 三面体_Three.js基础探寻五——正二十面体、圆环面等
除了
1.圆形
CircleGeometry可以创建圆形或者扇形:
THREE.CircleGeometry(radius, segments, thetaStart, thetaLength)
radius:半径
segmentsWidth:经度上的分段数
segmentsHeight:纬度上的分段数
thetaStart:纬度开始的弧度
thetaLength:纬度跨过的弧度
new THREE.CircleGeometry(3, 18, Math.PI / 3, Math.PI / 3 * 4) 创建一个在x轴和y轴所在平面的三分之二圆的扇形:
2.圆柱体
圆柱体(CylinderGeometry)的构造函数是:
THREE.CylinderGeometry(radiusTop,radiusBottom,height,radiusSegments, heightSegments, openEnded)
radiusTop:顶面半径
radiusBottom:底面的半径
height:圆柱体的高度
radiusSegments:顶面与底面的分段数
heightSegments:侧面的分段数
openEnded:是否没有顶面和底面,布尔类型,缺省值为false,表示有顶面和底面。
当radiusTop和radiusBottom设置为相同的值时,创建的是一个标准圆柱体:
new THREE.CylinderGeometry(2, 2, 4, 18, 3)创建一个顶面与底面半径都为2,高度为4的圆柱体:
当radiusTop和radiusBottom设置为不同的值时,创建的是一个圆台。new THREE.CylinderGeometry(2, 3, 4, 18, 3)将底面半径设为3:
openEnded设置为true时创建一个没有顶面与底面的圆台,new THREE.CylinderGeometry(2, 3, 4, 18, 3, true)的效果:
3.正四面体,正八面体,正二十面体
正四面体(TetrahedronGeometry)、正八面体(OctahedronGeometry)、正二十面体(IcosahedronGeometry)的构造函数较为类似,分别为:
THREE.TetrahedronGeometry(radius, detail)
THREE.OctahedronGeometry(radius, detail)
THREE.IcosahedronGeometry(radius, detail)
其中,radius是半径;detail是细节层次(Level of Detail)的层数,对于大面片数模型,可以控制在视角靠近物体时,显示面片数多的精细模型,而在离物体较远时,显示面片数较少的粗略模型。这里我们不对detail多作展开,一般可以对这个值缺省。
new THREE.TetrahedronGeometry(3)创建一个半径为3的正四面体:
new THREE.OctahedronGeometry(3)创建一个半径为3的正八面体:
乍一看有点像光能使者的魔法阵哈,用三维的眼光去看。
new THREE.IcosahedronGeometry(3)创建一个半径为3的正二十面体:
4.圆环面
圆环面(TorusGeometry)的形状类似甜甜圈,其构造函数是:
THREE.TorusGeometry(radius, tube, radialSegments, tubularSegments, arc)
radius:圆环半径
tube:管道半径
radialSegments:径向的分段数
tubularSegments:管的分段数,详见下图
arc:圆环面的弧度,缺省值为Math.PI * 2
new THREE.TorusGeometry(3, 1, 4, 8)创建一个粗糙的圆环面:
new THREE.TorusGeometry(3, 1, 12, 18)创建一个较为精细的圆环面:
这个就很像甜甜圈了。
new THREE.TorusGeometry(3, 1, 4, 8, Math.PI / 3 * 2)创建部分圆环面:
5.圆环结
圆环结(TorusKnotGeometry)的构造参数为:
THREE.TorusKnotGeometry(radius,tube,radialSegments,tubularSegments, p, q, heightScale)
radius:圆环半径
tube:管道半径
radialSegments:径向的分段数
tubularSegments:管的分段数
p:p\Q:对knot(节)状方式有效,控制曲线路径缠绕的圈数,其中p决定垂直方向的参数(可缺省)
q:水平方向的参数(可缺省)
heightScale:z轴方向上的缩放,默认值1
new THREE.TorusKnotGeometry(2, 0.5, 32, 8)的效果:
关于圆环结的详细内容可参看
6.源码
1
2
3
4
5
3.js测试五
6
7
8
9
10
11
12 functioninit() {13 varrenderer= newTHREE.WebGLRenderer({14 canvas: document.getElementById('mainCanvas')15 });16 renderer.setClearColor(0x000000);17 varscene= newTHREE.Scene();18
19 //camera
20 varcamera= newTHREE.OrthographicCamera(-5,5,3.75,-3.75,0.1,100);21 camera.position.set(25,25,25);22 camera.lookAt(newTHREE.Vector3(0,0,0));23 scene.add(camera);24
25 varmaterial= newTHREE.MeshBasicMaterial({26 color:0xffff00,27 wireframe:true
28 });29
30 drawCircle(scene, material);//圆形
31 //drawCylinder(scene, material); //圆柱体
32 //drawTetra(scene, material); //正四面体
33 //drawOcta(scene, material); //正八面体
34 //drawIcosa(scene, material); //正二十面体
35 //drawTorus(scene, material); //圆环面
36 //drawTorusKnot(scene, material); //圆环结
37
38 //render
39 renderer.render(scene, camera);40 }41
42 functiondrawCircle(scene, material) {43 varcircle= newTHREE.Mesh(newTHREE.CircleGeometry(3,18, Math.PI/ 3, Math.PI/ 3 * 4), material);44 scene.add(circle);45 }46
47 functiondrawCylinder(scene, material) {48 //var cylinder = new THREE.Mesh(new THREE.CylinderGeometry(2, 2, 4, 18, 3), material);
49 //var cylinder = new THREE.Mesh(new THREE.CylinderGeometry(2, 3, 4, 18, 3), material);
50 varcylinder= newTHREE.Mesh(newTHREE.CylinderGeometry(2,3,4,18,3,true), material);51 scene.add(cylinder);52 }53
54 functiondrawTetra(scene, material) {55 vartetra= newTHREE.Mesh(newTHREE.TetrahedronGeometry(3), material);56 scene.add(tetra);57 }58
59 functiondrawOcta(scene, material) {60 varocta= newTHREE.Mesh(newTHREE.OctahedronGeometry(3), material);61 scene.add(octa);62 }63
64 functiondrawIcosa(scene, material) {65 varicosa= newTHREE.Mesh(newTHREE.IcosahedronGeometry(3), material);66 scene.add(icosa);67 }68
69 functiondrawTorus(scene, material) {70 //var torus = new THREE.Mesh(new THREE.TorusGeometry(3, 1, 12, 18), material);
71 vartorus= newTHREE.Mesh(newTHREE.TorusGeometry(3,1,4,8, Math.PI/ 3 * 2), material);72 scene.add(torus);73 }74
75 functiondrawTorusKnot(scene, material) {76 vartorus= newTHREE.Mesh(newTHREE.TorusKnotGeometry(2,0.5,32,8), material);77 scene.add(torus);78 }79
80
81
threejs 三面体_Three.js基础探寻五——正二十面体、圆环面等相关推荐
- threejs 绘制球体_Three.js基础探寻四——立方体、平面与球体
前面简单介绍了 1.立方体 虽然这一形状的名字叫立方体(CubeGeometry),但它其实是长方体,也就是长宽高可以设置为不同的值.其构造函数是: THREE.CubeGeometry(width, ...
- threejs 三面体_three.js初探,立体几何入手(一)
前言:首先先推荐一篇博客,关于webgl原理,讲的非常之通俗易懂了 图解WebGL&Three.js工作原理 webGL可以理解为openGL ES2.0 (webGL2.0 - openG ...
- threejs 三面体_Three.js 自定义了一个几何体
几何体本质: 立方体几何体BoxGeometry本质上就是一系列的顶点构成,只是Threejs的APIBoxGeometry把顶点的生成细节封装了,用户可以直接使用. 比如一个立方体网格模型,有6个面 ...
- Three.js基础探寻二——正交投影照相机
本篇主要介绍照相机中的正交投影照相机. 第一篇传送门:Three.js基础探寻一 1.照相机 图形学中的照相机定义了三维空间到二维屏幕的投影方式. 针对投影方式照相机分为正交投影照相机和透视投影照相机 ...
- Three.js基础探寻七——Lamber材质与Phong材质
材质(Material)是独立于物体顶点信息之外的与渲染效果相关的属性.通过设置材质可以改变物体的颜色.纹理贴图.光照模式等. 本篇将介绍基本材质以及两种基于光照模型的材质(Lamber与Phong) ...
- (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】
JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...
- JS基础知识学习(一)
JS基础知识 前端开发常用的浏览器 谷歌浏览器(chrome):Webkit内核(v8引擎) 火狐浏览器(firefox):Gecko内核 欧朋浏览器(opera):Presto内核 IE浏览器:Tr ...
- 前端面试题目汇总摘录(JS 基础篇 —— 2018.11.01更新)
温故而知新,保持空杯心态 JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string type ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- 前端面试题目汇总摘录(JS 基础篇)
温故而知新,保持空杯心态 JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string type ...
最新文章
- 多样化实现Windows phone 7本地数据访问5——深入Rapid Repository
- spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?
- Flutter - International 国际化,Localization 本地化, 使用Intl
- 【Android个人理解(八)】跨应用调用不同组件的方法
- 230. Kth Smallest Element in a BST
- 前端学习(2848):鼠标点击事件
- gojs实现最短路径寻址实例
- jquery手写轮播图_jquery 实现轮播图详解及实例代码_jquery_脚本之家
- python编程狮电脑版_w3cschool编程狮PC版-编程狮电脑版下载 v3.3.10--PC6电脑版
- VMware虚拟机安装CentOS6.4、部署web项目全过程(设置固定IP、安装JDK、Tomcat、Redis、部署项目)...
- Android开发案例源码解析之使用sqlite数据库记录并读取GPS信息
- 华为S2000系列交换机电源维修
- Mat 转 IplImage
- MATLAB 手写签名拍照 转换黑白图片 方便插入文件签名
- Java入门第116课——向List中插入和删除元素
- 单片机晶振概述及工作原理
- html图片合成视频,将视频和图片合成到一个页面
- 数字图像处理MATLAB大作业:基础版
- sklearn 笔记:高斯过程
- 5月青龙面板JD脚本库
热门文章
- 交通信号灯规范国家标准出台
- php项目权限系统设计
- Xshell实现命令快速输入
- 基于vue.js 编写的简单的文件管理器的demo
- 海康存储硬盘盒开箱+小螃蟹RTL9210固件更新+量产软件下载
- Windows下 使用Python 3 调用讯飞 TTS 引擎实现文本转语音
- dnf服务器炸团门票怎么找回,DNF:打团掉线被献祭点这里免费补门票,再也不怕被献祭没牌了...
- modbus主机、从机、虚拟串口调试软件
- HCSE5.0中文胶片
- SolidWorks学习(1):基础绘图