V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jujuxia
V2EX  ›  程序员

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

  •  
  •   jujuxia · 2018-06-18 20:23:06 +08:00 · 4389 次点击
    这是一个创建于 2110 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  2018-06-18 23:32:09 +08:00
    利益相关--- 某厂 前端开发 想做点 webgl 相关的个人项目

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

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

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

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

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

    至于构架,是将来的事了。先撸个 prototype 有了经验再重新组织。想怎么构架也不晚。
    zhuangzhuang1988
        20
    zhuangzhuang1988  
       2018-06-19 01:02:50 +08:00
    @but0n babylon 做的比较完全,debuger 秒一切,还有物理引擎,GUI 系统。 即开即用 threejs 还是集中在渲染。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1227 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 18:04 · PVG 02:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.