不知从什么时候开始,原创纸灯箱在吧里流行起来。原创门槛并不高——懂得使用任意二维图形绘制工具,如PS、AI、cad甚至画图,即可设计图纸(理论上还可以用笔在纸上作画)。
五年前,我在吧里发了自己的第一个原创纸灯箱。当时是用paint.net绘制的图纸,设计过程中遇到了以下几个问题:
1. 编辑不便。当时的我不懂得任何矢量编辑软件,绘制工作是直接对像素进行的。一旦发现图纸精度不够、部分已经绘制的组件需要调整,就需要把那一部分擦掉重绘。
2. 描图不便。吧里有许多图纸是通过描画已有的图像,手动将其分层得到的。我那时是拿bezier曲线一段一段地把物体边缘拼出来的,可想而知有多不容易。如果可以利用工具辅助进行描绘(魔术套索)并自动拟合曲线,会方便许多。
3. 效果不直观。计算机屏幕上显示的二维图纸和刻出来的结果在几何形态上基本一致,但在颜色上就天差地别了。由于无法看到打光后的效果,我们在设计图纸时基本没有设计灯光的能力,最多达到“在这开个孔让它亮一点”的程度,有很大的运气成分。
因此,我一直想编写一个能够自动根据图纸模拟出灯光效果的工具。无奈那时学艺不精,编程方面是业余爱好者,对光传播相关的物理模型更是一窍不通。一眨眼,五年过去了,我已经在研读计算机图形学方向,有了许多背景知识,是时候动手了。
简单地说,我想编写一个软件来解决上述的三个纸灯箱图纸设计问题。目前(自认为)已经把第三个问题解决得差不多了:

上图是目前的阶段性成果。在指定场景中的纸张雕刻形状、间距、光源、纸张厚度和粗糙度等参数后,软件会自动计算纸灯箱的外观,方便使用者观察刻好后的效果。
发布本帖主要是为了讨论和该工具有关的一系列设计事宜,讨论的结果将决定后续要添加哪些功能,欢迎各位提出需求。
================= QA分割线 =================
Q:什么时候能发布第一版?
A:我有学业要完成,业余时间不多,因此不能指望今天提个新需求,过两天就能完全实现。因此,我不会对发布时间作出承诺。但本贴会不断发布软件新功能的开发情况,可以关注之。
Q:软件的计算结果和实际刻出来的效果完全一致吗?
A:要和现实一致还是非常困难,因为我们很难告诉软件现实中的灯光长什么样子,也很难让软件中的纸张材质模型和现实中使用的完全相符。尽管如此,软件的计算过程是基于物理的,光的传播过程和纸张材质模型都有据可依,只要设置正确,计算结果和刻出来的效果应该是高度相似的。
Q:图中的那些参数过于晦涩,什么“内部散射率”,完全看不懂,怎么用?
A:这只是给开发人员看的参数。发布前我会预先内置一些纸张类型,到时候直接选用即可。
Q:软件计算的耗时如何?
A:只要你有一张不错的GPU,计算是很快的,一瞬间就可以看到一个初步的效果,几秒内则会不断变得更精细。
Q:我是对这个项目有兴趣的开发者,如何参与该软件的研发?
A:项目尚处于早期,总体设计还未定型,我也没怎么写注释和文档,因此很难合作。时机合适后我会在github上开源,到时候可以自由参与。
================= 技术分割线 =================
软件使用C++ + DirectX 11开发,光照算法是最简单的path tracing(连MIS都没有),纸张材质模型出自论文“A Physically-Based BSDF for Modeling the Appearance ofPaper”。
五年前,我在吧里发了自己的第一个原创纸灯箱。当时是用paint.net绘制的图纸,设计过程中遇到了以下几个问题:
1. 编辑不便。当时的我不懂得任何矢量编辑软件,绘制工作是直接对像素进行的。一旦发现图纸精度不够、部分已经绘制的组件需要调整,就需要把那一部分擦掉重绘。
2. 描图不便。吧里有许多图纸是通过描画已有的图像,手动将其分层得到的。我那时是拿bezier曲线一段一段地把物体边缘拼出来的,可想而知有多不容易。如果可以利用工具辅助进行描绘(魔术套索)并自动拟合曲线,会方便许多。
3. 效果不直观。计算机屏幕上显示的二维图纸和刻出来的结果在几何形态上基本一致,但在颜色上就天差地别了。由于无法看到打光后的效果,我们在设计图纸时基本没有设计灯光的能力,最多达到“在这开个孔让它亮一点”的程度,有很大的运气成分。
因此,我一直想编写一个能够自动根据图纸模拟出灯光效果的工具。无奈那时学艺不精,编程方面是业余爱好者,对光传播相关的物理模型更是一窍不通。一眨眼,五年过去了,我已经在研读计算机图形学方向,有了许多背景知识,是时候动手了。
简单地说,我想编写一个软件来解决上述的三个纸灯箱图纸设计问题。目前(自认为)已经把第三个问题解决得差不多了:

上图是目前的阶段性成果。在指定场景中的纸张雕刻形状、间距、光源、纸张厚度和粗糙度等参数后,软件会自动计算纸灯箱的外观,方便使用者观察刻好后的效果。
发布本帖主要是为了讨论和该工具有关的一系列设计事宜,讨论的结果将决定后续要添加哪些功能,欢迎各位提出需求。
================= QA分割线 =================
Q:什么时候能发布第一版?
A:我有学业要完成,业余时间不多,因此不能指望今天提个新需求,过两天就能完全实现。因此,我不会对发布时间作出承诺。但本贴会不断发布软件新功能的开发情况,可以关注之。
Q:软件的计算结果和实际刻出来的效果完全一致吗?
A:要和现实一致还是非常困难,因为我们很难告诉软件现实中的灯光长什么样子,也很难让软件中的纸张材质模型和现实中使用的完全相符。尽管如此,软件的计算过程是基于物理的,光的传播过程和纸张材质模型都有据可依,只要设置正确,计算结果和刻出来的效果应该是高度相似的。
Q:图中的那些参数过于晦涩,什么“内部散射率”,完全看不懂,怎么用?
A:这只是给开发人员看的参数。发布前我会预先内置一些纸张类型,到时候直接选用即可。
Q:软件计算的耗时如何?
A:只要你有一张不错的GPU,计算是很快的,一瞬间就可以看到一个初步的效果,几秒内则会不断变得更精细。
Q:我是对这个项目有兴趣的开发者,如何参与该软件的研发?
A:项目尚处于早期,总体设计还未定型,我也没怎么写注释和文档,因此很难合作。时机合适后我会在github上开源,到时候可以自由参与。
================= 技术分割线 =================
软件使用C++ + DirectX 11开发,光照算法是最简单的path tracing(连MIS都没有),纸张材质模型出自论文“A Physically-Based BSDF for Modeling the Appearance ofPaper”。