纸雕吧 关注:72,426贴子:142,576

【问题探讨】关于纸灯箱辅助设计工具的需求讨论

只看楼主收藏回复

不知从什么时候开始,原创纸灯箱在吧里流行起来。原创门槛并不高——懂得使用任意二维图形绘制工具,如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”。


IP属地:上海1楼2020-08-18 17:44回复
    哇!楼主有心了!太棒了!


    IP属地:上海来自iPhone客户端2楼2020-08-19 02:08
    收起回复
      我想知道这是要从画图到成品效果这软件都可以做到,是吗?


      IP属地:福建来自Android客户端3楼2020-08-19 11:11
      收起回复
        楼主考量了一下,要制作一个使用起来得心应手的绘图工具并不是一件那么容易的事情——即使只是做到paint.net的程度,工作量也是十分恐怖的。如果我直接开始做这个,那恐怕在相当长的一段时间里都在做画图方面的功能,不知道要什么时候才能变得实用了。
        由此,我打算先搞个workaround:让软件直接从磁盘上获取文件并进行绘制。在用户指定了是哪些磁盘文件后,软件会自动监听这些文件的修改情况,一旦有变化,就立刻重新加载该文件的绘制。这样一来,软件的使用方式变成了:
        1. 打开软件,指定有哪些层,每一层对应磁盘上的哪个图像文件。
        2. 打开任意自己熟悉的绘图软件编辑这些图像文件。
        3. 保存图像时软件会自动加载之。
        说白了就是编辑的时候要经常按Ctrl + S进行保存,就把Ctrl + S当作“重新进行计算”的快捷键就行了。至于在软件内进行绘图的功能,楼主还是想做一做的,但要放到之后。目前的任务是让软件具有一定的实用性。

        目前的使用方式如上图所示,左边是任意自己熟悉的图像编辑软件,只要按下Ctrl + S,右侧软件绘制的结果就会自动刷新。
        ================ 分割线 ================
        计划表:
        1. 更好的层管理列表:显示文件路径,重命名,拖动排序等。
        2. 光源指定。
        3. 纸张材质设置。
        4. 绘制参数设置。


        IP属地:上海4楼2020-08-22 17:26
        回复
          目前已经可以绘制出我当时设计出的图纸效果。再稍微改善一下界面设计,就可以作为初版本发出来了:

          当然功能还是缺失了很多,现在只是能够监听文件的修改并进行绘制而已。


          IP属地:上海5楼2020-08-23 01:15
          回复
            捕捉大佬,@35℃秋水河 快过来,纸灯辅助工具


            来自Android客户端6楼2020-08-23 04:07
            回复
              姑且放个能绘制的版本,未在除本人PC以外的机器上测试过,不清楚会不会有什么问题。
              使用说明明天再写,今天有点太晚了。


              IP属地:上海7楼2020-08-24 23:54
              收起回复


                IP属地:江苏来自Android客户端8楼2020-08-25 22:30
                回复
                  初版软件的下载链接已经发在7楼的评论里了,现在写个使用说明。
                  打开软件后会看到如下界面:

                  左边是设置各种绘制参数的地方,右边是显示绘制结果的地方。我们至少需要设置好纸张和灯光,才能得到绘制结果。所以下一步是点击左边的“读取所有”按钮,然后软件会弹出一个文件浏览器:

                  双击文件夹的名字来进入它;双击“..”返回上一级目录;单击文件名来选择或取消选择,按住shift来进行多选,选好后点ok,软件会自动将选中的多张图片按名字排序,并为其创建对应的纸张。
                  注意图片格式目前仅支持png, jpg和bmp,所有图片的大小必须是一样的。图像中黑色区域表示镂空的区域,其他颜色表示被纸填充的区域。
                  选好后软件变成下面的样子:

                  可以看到右边的区域已经变成了选择的图片的形状,只是仍然是一片黑色——因为还没选灯光。
                  接下来点击左侧的“浏览光源文件”按钮,选择一幅和之前的图像大小相同的图像,它用来表示背景灯的颜色分布。我整了一张这个:

                  选好后终于显示出东西来了:

                  灯光有点太弱了,什么都看不清。我们把“光源亮度”拖到一个更大的数值上:

                  这就完成了最基本的预览工作。
                  软件会自动监听之前所选中的图片文件的修改,只要改过它们,软件会立刻加载之,并重新进行绘制。我在绘制图纸的时候,会一直把软件开着,这样在修改图片后随时可以查看绘制的结果。
                  至于其他参数的设置,因为十分繁琐,先不展开来讲了。有兴趣可以调整着试一试,不过可能会产生一些非常奇怪的效果就是了……
                  基于这个工具,昨天一小会儿就做了这个:


                  IP属地:上海9楼2020-08-26 19:15
                  回复
                    Roadmap:
                    更友好的纸张材质设置界面:现在这一堆参数得看了论文才能弄懂怎么改,太不人性化了。
                    更真实的光源设置:现在的光源是通过给一张光源图像,并将其作为一个diffuse光源得到的。这样的光源很难在现实中弄出来,一定要说的话,把一个高质量的显示器放在纸张后面也许可以做到。所以我们需要更贴近实际的光源指定方式,比如在特定的位置摆几个led什么的。


                    IP属地:上海10楼2020-08-26 19:18
                    收起回复
                      解压打开,提示如下。


                      IP属地:陕西12楼2020-08-29 12:20
                      收起回复
                        有人知道为什么我更新了好几个楼层,它们都只有我自己可见吗 = = 这样下去什么东西都发不出来


                        IP属地:上海16楼2020-08-31 03:22
                        回复
                          打不开,win7,64位


                          IP属地:福建来自Android客户端17楼2020-08-31 14:21
                          收起回复
                            我也差不多是这样。请问楼主被屏B的楼层是不是跟链接有关?


                            IP属地:上海来自iPhone客户端18楼2020-09-08 23:17
                            收起回复
                              楼主,请问为什么我设置了光源的图片可是右边还是显示黑屏?


                              IP属地:湖南19楼2020-09-29 12:19
                              回复