基于react + threejs三维编辑器

385 阅读1分钟

体验地址

http://8.219.133.38:2401/edit

(点进去之后刷新一下,有点小bug,模拟调api)

介绍

一个简单的3D渲染编辑器,主要为了学习threejs用法,但是threejs使用比较麻烦,于是用了react-three-fiber插件

1、重新手写递归树

为什么要重新写?

希望 点击 树结构 节点 的时候,能够 直接 选中 模型引用对象,于是 直接 使用了 模型的object,但是这个object的key不太好改,没法直接套用ant组件,只能重写组件。

一个模型由很多部分组成,树结构 展示 模型嵌套结构,但是 不希望 选择细节部分,于是重写了树结构组件,使用deep字段控制层数,限制点击只能选中第一层

树结构,第1层,deep为1

1717472139449.jpg

树结构,开始递归,deep+1

1717472160300.jpg

点击事件,判断deep是否为1

1717472183869.jpg

2、编辑器界面

经典左中右结构,左边是 模型结构 和 资源

资源

内置模型:提前写好的

用户上传模型:支持2种方式,1、本地渲染,2、上传到服务器后,拉取服务器资源,目前没有写接口

灯光模型:提前写好的

右侧属性

场景

操作面板,场景属性,相机属性

模型

模型属性:位置,缩放,旋转这些

模型动画:内置动画

1717409898561.jpg

1717409783554.jpg

3、hook写法

主要分为,模型操作方法和模型组件

模型操作hook

1717473759330.jpg

模型组件

帧操作使用 useFrame,这个hook是react-three-fiber内置的,用来执行动画函数

1717474067919.jpg