Caco的奇幻之旅3- 二元树 Binary Tree in Three.js(上)

前言

又过了几个礼拜,Caco我从零基础开始学习Three,我必须承认,头好痛呀!!在2D平面画一条线,到了3D要多複杂有多複杂,如果你跟我一样缺乏建模的知识,那么我只有一个建议,保持耐心。

这次主要在钻研二元树的结构设计,以及怎么把每一个模型正确配置,目前只进展到点、线、还没有面,也算是堪用了,就是...有点丑?不管了,还是先来聊聊实作项目吧!

Geometry & Material

这两个物件是让我最头痛的,比如以下三者:模型在空间的位置、向量在空间的位置、材质在空间的位置,就很容易搞混,目前这个专案只用简单粗暴的方法区分:

一个点或线的属性由Material设定数个点的集合由Geometry设定

Loka Voterra 3D

还记得开篇尝试的粒子系统吗?很适合移植过来做测试,于是乎:
http://img2.58codes.com/2024/20135197iYrakxs9LF.png
http://img2.58codes.com/2024/20135197nGVCOdriwT.png

新手误区

我学会做立方体了,那么我就把geometry改成BufferAttribute,就可以了吧,呵呵!好简单。

http://img2.58codes.com/2024/20135197ffdaEhmNo0.png

然而,上面的写法什么都不会有,首先BufferGeometry需要输入一串阵列来表示向量,接着要使用PointsMaterial才会对每一个点做渲染。如下:

http://img2.58codes.com/2024/20135197zvvAXJyfeQ.png

二元树 Binary Tree

一直有个想法,是把2021铁人赛的作品做成一颗树,今天终于实现了!
http://img2.58codes.com/2024/20135197LdExX5VnQa.png
http://img2.58codes.com/2024/20135197xBI6UyiObE.png

新手误区

我会做粒子、也会设定材质了,只要加alpha就可以让材质透明了吧!

http://img2.58codes.com/2024/20135197xaU86erZRW.png

结果才发现三个点之间有上下层关係、最底层(第一个点)渲染是不考虑透明的,若离摄影机较近会形成一个方块直接挡住第二、第三个点。

http://img2.58codes.com/2024/20135197a58rOcEMZo.png

因此一个简单、直接的做法就是让所有粒子共用一个geometry,并且为每一个粒子都建立一个particleMaterial,产生一个独立的模型,用模型本身去调整位置、以及其专属的材质去设定颜色

结语

目前产能不够,没办法花太多精力教学和解释,请多多包涵!大部分精力还在专研学习新东西,上次的WebWorker系列也未能继续拓展,只能说,加油加油!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章