基础环境搭建:(TrackballControls)

创建extrude模型:

  1. path:

CatmullRomCurve3():使用Catmull-Rom算法, 从一系列的点创建一条平滑的三维样条曲线。
CatmullRomCurve3( points : Array, closed : Boolean, curveType : String, tension : Float )

    const closedSpline = new THREE.CatmullRomCurve3([new THREE.Vector3(-60, -100, 60),new THREE.Vector3(-60, 20, 60),new THREE.Vector3(-60, 120, 60),new THREE.Vector3(60, 20, -60),new THREE.Vector3(60, -100, -60)], true, 'catmullrom')
  1. extrudeSettings,实际上是ExtrudeGeometry()几何体对象的第二个参数options对象:

options — 一个包含有下列参数的对象:
curveSegments — int,曲线上点的数量,默认值是12。
steps — int,用于沿着挤出样条的深度细分的点的数量,默认值为1。
depth — float,挤出的形状的深度,默认值为1。
bevelEnabled — bool,对挤出的形状应用是否斜角,默认值为true。
bevelThickness — float,设置原始形状上斜角的厚度。默认值为0.2。
bevelSize — float。斜角与原始形状轮廓之间的延伸距离,默认值为bevelThickness-0.1。
bevelOffset — float. Distance from the shape outline that the bevel starts. Default is 0.
bevelSegments — int。斜角的分段层数,默认值为3。
extrudePath — THREE.Curve对象。一条沿着被挤出形状的三维样条线。Bevels not supported for path extrusion.
UVGenerator — Object。提供了UV生成器函数的对象。

    const extrudeSettings1 = {steps: 100,bevelEnabled: false,extrudePath: closedSpline}
  1. shape:

形状(Shape):使用路径以及可选的孔洞来定义一个二维形状平面,可以和ExtrudeGeometry、ShapeGeometry一起使用获取点或三角面。
Shape( points : Array ):points – (optional) 一个Vector2数组。
从点来创建一个Shape。第一个点定义了偏移量, 接下来的点被作为LineCurves加入到curves中。如果没有点被指定,一个空的形状将会被创建,且.currentPoint将会被设为原点。

    const pts1 = [], count = 3const r = 20for (let i = 0; i < count; i++) {const a = i / count * 2 * Math.PIpts1.push(new THREE.Vector2(r * Math.cos(a), r * Math.sin(a)))}const shape1 = new THREE.Shape(pts1)
  1. 创建extrude网格模型:

ExtrudeGeometry(shapes : Array, options : Object)

    const geometry1 = new THREE.ExtrudeGeometry(shape1, extrudeSettings1)const material1 = new THREE.MeshLambertMaterial({color: 0xb00000})const mesh1 = new THREE.Mesh(geometry1, material1)scene.add(mesh1)

同理创建其他extrude网格模型:

THREE.MathUtils.randFloat ( low : Float, high : Float ) : Float
在区间 [low, high] 内随机一个浮点数。

    const randomPoints = []for (let i = 0; i < 10; i++) {randomPoints.push(new THREE.Vector3((i - 4.5) * 50, THREE.MathUtils.randFloat(-50, 50), THREE.MathUtils.randFloat(-50, 50)))}const randomSpline = new THREE.CatmullRomCurve3(randomPoints)const extrudeSettings2 = {steps: 200,bevelEnabled: false,extrudePath: randomSpline}//画五角星。。。const pts2 = [], numPts = 5for (let i = 0; i < numPts * 2; i++) {const l = i % 2 == 1 ? 10 : 20const a = i / numPts * Math.PIpts2.push(new THREE.Vector2(l * Math.cos(a), l * Math.sin(a)))}const shape2 = new THREE.Shape(pts2)const geometry2 = new THREE.ExtrudeGeometry(shape2, extrudeSettings2)const material2 = new THREE.MeshLambertMaterial({color: 0xff8000})const mesh2 = new THREE.Mesh(geometry2, material2)scene.add(mesh2)

当使用ExtrudeGeometry创建Mesh的时候,如果你希望分别对它的表面和它挤出的侧面使用单独的材质,你可以使用一个材质数组。第一个材质将用于其表面;第二个材质则将用于其挤压出的侧面。

    const extrudeSettings3 = {steps: 1,depth: 20,bevelEnabled: true,bevelThickness: 2,bevelSize: 4,bevelSegments: 1}const geometry3 = new THREE.ExtrudeGeometry(shape2, extrudeSettings3)const materials = [material1, material2]const mesh3 = new THREE.Mesh(geometry3, materials)mesh3.position.set(50, 100, 50)scene.add(mesh3)

Three extrude挤压模型实例相关推荐

  1. ARIMA模型实例讲解——网络流量预测可以使用啊

    ARIMA模型实例讲解:时间序列预测需要多少历史数据? from:https://www.leiphone.com/news/201704/6zgOPEjmlvMpfvaB.html   雷锋网按:本 ...

  2. django 1.8 官方文档翻译: 2-3-1 模型实例参考

    模型实例参考 该文档详细描述模型 的API.它建立在模型 和执行查询 的资料之上, 所以在阅读这篇文档之前,你可能会想要先阅读并理解那两篇文档. 我们将用执行查询中所展现的 博客应用模型 来贯穿这篇参 ...

  3. 多输出模型实例的数据加载

    多输出模型实例的数据加载 相关的数据集放在C:/Users/Administrator/data/moc import tensorflow as tf from tensorflow import ...

  4. 企业级用户画像:开发RFM模型实例

    絮叨两句: 博主是一名数据分析实习生,利用博客记录自己所学的知识,也希望能帮助到正在学习的同学们 人的一生中会遇到各种各样的困难和折磨,逃避是解决不了问题的,唯有以乐观的精神去迎接生活的挑战 少年易老 ...

  5. 大数据分析R中泊松回归模型实例

    如果您知道如何以及何时使用泊松回归,它可能是一个非常有用的工具.在大数据分析R中泊松回归模型实例中,我们将深入研究泊松回归,它是什么以及R程序员如何在现实世界中使用它. 具体来说,我们将介绍: 1)泊 ...

  6. 金融时间序列分析:8. MA模型实例(Python)

    0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...

  7. 金融时间序列分析:5. AR模型实例(Python)

    0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...

  8. 金融时间序列分析: 10. ARMA模型实例(R,Python)

    0. 目录 金融时间序列分析:9. ARMA自回归移动平均模型 金融时间序列分析:8. MA模型实例(Python) 金融时间序列分析:7. MA滑动平均模型 金融时间序列分析:6. AR模型实例 金 ...

  9. 基于R语言一元线性回归模型实例及代码

    基于R语言一元线性回归模型实例及代码 题目描述 数据特征及可视化 建立模型与初步评价 (自己写lm()代码) 显著性检验 整体显著性检验 数学理论 系数显著性检验 代码实现系统显著性检验 回归诊断 异 ...

最新文章

  1. 开启Windows7的隐藏功能:虚拟WiFi和SoftAP(即虚拟无线AP)
  2. java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询过程解析...
  3. 1 iOS设备的分辨率
  4. 剑指offer例题——二维数组中的查找
  5. qt布局嵌套_PyQt5 笔记(01):嵌套布局
  6. mac 下launchpad超级慢的问题
  7. javase阶段总结脑图
  8. python自动化办公 51cto_利用python实现批量自动化运维脚本案例
  9. hihocoder216周:贪心或二分
  10. Kalman Filter—Step by step Derivation of Kalman Gain
  11. python随机抽号_Python学习随记 ————随机抽号器(一)
  12. 人文精神、人文教育与高等教育 徐梦秋
  13. Shell(Bash)输入一个IP 判断是否可用并进行ping 测试
  14. 广东省公共资源交易平台逆向分析
  15. Ubuntu桌面不见了,桌面找回
  16. 华东师范大学 硕士毕业论文模版 overleaf版
  17. 算法学习-连续子数组求和最大值
  18. 大学物理 习题分析与解答(PDF)
  19. cc1plus:所有的警告都被当作是错误
  20. 魅族mx5android,可能是最好用安卓手机 魅族mx5小技巧分享

热门文章

  1. python火车票爬虫
  2. unity3d实现第一人称射击游戏之CS反恐精英(五)(第一视角UI搭建,血量,金钱,子弹,准心,倒计时)
  3. (十五)c#Winform自定义控件-键盘(二)
  4. python中def函数右侧有个-的含义
  5. AOP面向切面编程之全局日志打印/统计接口耗时
  6. 【Matlab系列】Matlab各个版本安装教程分享
  7. 问题 G: Heartlessly 的魔法石
  8. 微星迷你服务器开机无任何显示,合肥微星笔记本维修「请问 微星电脑 突然黑屏 电源 和cpu亮着 就是开不了机 怎么办?」...
  9. 罗远飞:自动特征工程在推荐系统中的研究
  10. Linux (Android) 串口通信教程