我想做一个 3D 编辑器,我该怎么确定一个基本的架构,然后往里面填代码?

2018-06-18 20:23:06 +08:00
 jujuxia

如题, 业余时间想自己设计开发的一款在线 3D 编辑软件,但是,我不知道该怎么去架构才最合理,怕写到半截,发现不对,又回来改架构,那就麻烦了。 不过现在市面上那么多编辑器,什么 ps 呀,AI,AE 啊我觉得他们的架构或者设计应该是在计算机领域都已经归纳总结过了的,可惜我不是计算机专业出身,基础知识比较薄,所以一时也不知道,该从哪里入手去了解,求各位大神指点下。

4446 次点击
所在节点    程序员
20 条回复
hst001
2018-06-18 20:29:56 +08:00
架构师,不是看几本书或者做几年项目就能成的。你还是先打好基础吧,慢慢的你就知道这条路怎么走了。
yanaraika
2018-06-18 21:17:29 +08:00
能用的 3D 编辑器不是一个人能搞出来的东西。目前有的都是瞄准某个目标领域。如果你现在不知道做的目的是什么、给谁用、也不知道怎么做,那我建议你就干脆别做
cyril4free
2018-06-18 21:23:00 +08:00
three.js 了解一下
imnpc
2018-06-18 21:35:08 +08:00
参见楼上的 three.js 国内很多在线 3D 预览都用的这个
我们给别人开发过一套也也用的这个 不过资料基本都是英文的多
如果用编辑 需要精通 js 很多通过 js 来实现
but0n
2018-06-18 21:36:16 +08:00
@cyril4free threejs 不是编辑器

https://github.com/jagenjo/webglstudio.js 了解一下
focusheart
2018-06-18 21:52:02 +08:00
Windows 10 带了一个画图 3D,你的意思是做一个这个画图 3D 的浏览器版本?
longear
2018-06-18 21:59:26 +08:00
PS AI AE 等商业软件的架构是不公开的,在 ADOBE 工作的人也不敢公开这些软件的架构。而且这类软件也不存在通用架构,因为 PS 是图像,AI 是矢量图元,AE 是视频,而且这些软件都是不断的迭代改进,初期版本的架构也并不一定合理。想要参考可以适当的看看 Blender 源码, 看看 3D 图元的数据结构,架构方面可借鉴的有限,毕竟是要做在线 3D 编辑器。不要怕改变架构而麻烦,如果怕的话一开始就不应该打算做这么大的项目。就是干。
momocraft
2018-06-18 22:05:01 +08:00
可以先做个简单的玩玩, 慢慢朝复杂的改
zhuangzhuang1988
2018-06-18 22:08:49 +08:00
babylon.js 了解一下, 秒杀 three.js
janus77
2018-06-18 22:08:54 +08:00
什么叫在线 3D 编辑器,不太懂,难道是 web 版本?
据我浅薄的知识所了解,3D 渲染是要花费大量的算力的,所以才需要电脑硬件很好。浏览器版本能实现吗
kerr92
2018-06-18 22:09:03 +08:00
three.js 项目本身是包含了一个编辑器的
freedom3
2018-06-18 22:16:13 +08:00
不知道楼主基础怎么样,以目前描述异想天开,工作量不是一个人能承担得起的
cfans1993
2018-06-18 22:29:41 +08:00
3dmax, c4d,zbrush,这些才是正经的 3d 建模软件,这个对 CPU 的算力要求真的很高(出图速度),况且功能也复杂,上手都有点难度,另外 3d 也分很多方向,建议先了解一下 3d 软件的操作思维和应用方向再考虑要不要做
defel
2018-06-18 22:43:29 +08:00
不要怂,就是干,搞一个方向弄起来再说。弄着弄着就会发现坑越来越多,一个个填,等过段时间再回头,就会发现自己学习了很多东西了。这种 3D 的东西要做一个能用的并不容易,也不是一个人能做的,而且底层主要依赖于计算几何学,说白了就是数学和算法,最基本的多面体布尔运算就能把人绕晕了,不信可以试试😁
coyove
2018-06-18 22:50:33 +08:00
作为相关从业人员强答一下吧:别做,太费功夫了。不如思考一下用户的模型都是什么格式,然后做相应的 web viewer 靠谱一些。

从零开始写编辑器,怕是最基本的 snapping 功能就能把你搞死。更不用说楼上提到的 mesh boolean。如果想要做 nurbs 曲面,整个又是另一个次元了。。。
jujuxia
2018-06-18 23:30:24 +08:00
@focusheart 差不多 ?
but0n
2018-06-19 00:00:59 +08:00
我还以为是 3D 建模方向的,
playcanvas 的话算是游戏引擎的编辑器, 是基于游戏引擎的 GUI 工具, 先做个 webgl 游戏引擎吧 ←_←
可以参考 unity
but0n
2018-06-19 00:06:12 +08:00
@zhuangzhuang1988

个人觉得没有可比性,
Babylon.js 和 Sketchfab 的 osgjs 多用于演示方面的, 交互和默认全屏特效做的很出彩(后者默认开启了 Bloom), 貌似这两者默认的都是 PBR 的 shader, threejs 也有一些 example 有类似效果
thedrwu
2018-06-19 00:21:24 +08:00
楼主想多了。这类程序大多都会挂在数学上。

通用灵活的图形定义就是个大麻烦。况且还要考虑到几何操作。
搞 minecraft 那样的可行,随手能捏出一个。csg 也相对容易。brep 可以试着撸一撸。高中几何学得扎实就能撸出来可观的东西了。NURBS 自己推导一下或者找本参考书勉强实现。几何操涉及到的其他知识,比如拓扑,需要花时间啃专业。

至于构架,是将来的事了。先撸个 prototype 有了经验再重新组织。想怎么构架也不晚。
zhuangzhuang1988
2018-06-19 01:02:50 +08:00
@but0n babylon 做的比较完全,debuger 秒一切,还有物理引擎,GUI 系统。 即开即用 threejs 还是集中在渲染。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/463921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX