https://www.wellobserve.com/?rss2024-03-15T12:59:38+08:00WellObserve吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.comhttps://www.wellobserve.com/?post=20240314092958emmm 感觉可以将顶部标题栏删掉,然后只保留侧栏,视觉上更简单。2024-03-14T09:29:58+08:002024-03-15T12:59:38+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emmm 感觉可以将顶部标题栏删掉,然后只保留侧栏,视觉上更简单。</p><p>不知道怎么写首页 2333</p>2024/03/14 09:29:58 - 2024/03/15 12:59:38https://www.wellobserve.com/?post=20240312115803谁在ddos2024-03-12T11:58:03+08:002024-03-12T11:58:03+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>谁在ddos</p>2024/03/12 11:58:03 - 2024/03/12 11:58:03https://www.wellobserve.com/?post=20211213142049 Now Our Paint dev log
2021-12-13T14:20:49+08:002024-03-11T16:35:03+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1><del>GPU画图工具实验</del> Now Our Paint dev log</h1>
<p>研究了使用GPU的无限画布像素模式画图工具的可行性,简要记录在此,细节参阅160本。</p>
<p><a href="?post=20211212002943" onclick='ShowWaitingBar()'>从对MyPaint研究引出</a></p>
<h2>其他局限</h2>
<p>笔刷的序列混合不好实现,由于是并行提交,没有办法直接访问已工作的方块,所以可能只能以不透明和上次笔触完成后的FBO复制用以采样的方式工作。</p>
<p>检查了之前的GUI截图,序列透明覆盖似乎是正确的,那么非半透明的覆盖应该也是顺序正常的,并且可以使用深度。但由于界面有浮动面板,这里实际不清楚能否去掉那些的FBO因为是二次叠上去的,不同面板不一定同时都刷新。</p><h3>额外贴图</h3>
<ul>
<li><strong>Main Image</strong>,超尺寸的用多张Tile,显存无法分配完全的则只分配以屏幕为中心的大于屏幕的尺寸,做笔刷整合时则需要多次切换并从内存中调入完整图(以每图而不是每笔刷为循环基准)。</li>
<li><strong>缩小贴图</strong>,用于缩小时查看,为每个主图块的小图,尚不知如何生成最好,(可能需要从CPU端生成?这样每应用一笔都需要读回来)。</li>
<li><strong>视口FBO</strong>,复用GUI的面板FBO,则无需新建,但注意像素格式,可能需要16位。</li>
<li><del>视口FBO复制,因为需要一并混合到应用好的主图上</del>。似乎可以直接采样底图并画到视口FBO,可以节省一个FBO。</li>
</ul><h2>主要操作细节</h2>
<p>贴图步进尺寸似乎可以设置为128,这也可以作为初始最小贴图的尺寸(但根据初始引用笔刷直接调节至下一个合理尺寸),每次步进就复制到新的上面,同时检查再建立同样大小伪贴图的可行性,不行则表明不能再请求这么多的显存用于贴图复制,此时启用局部高清贴图模式,丢掉未显示的那些(从内存中再读)。</p>
<p>涂抹和取色器采样似乎都只能从两层画完之后的视口FBO采,这样也能采到笔刷自身痕迹?(是期望的行为吗?)</p>
<p>保存就贴图分块读回来存。</p>
<p>时间原始时间每1/60秒更新一次笔刷显示列表,每提笔更新显示列表并应用最后一个撤销栈的笔画到光栅,对于不完整主图,需要重复调用内存里的那个图。</p><h2>该工具特点</h2>
<ul>
<li>无限画布(最终取决于客户机内存)</li>
<li>有限撤销步数。(达到撤销步数的笔触合成到最终光栅上,未达到的为GL图元)</li>
<li>基于像素而非矢量显示。</li>
</ul>
<h2>主要局限</h2>
<p>一些低功耗硬件可能不具备足够显存和内存以运行大图。SurfacePro6的<code>glxinfo</code>报GL最大贴图尺寸为16384×8192,显存报3058MB共享,因此目前的大图应该能合理工作,更大的效率就比较低了。</p>
<p><strong>无法混合和快速在原地累积,因此半透明刷子可能是很大的问题。</strong></p><p>更新:了解到<a href="https://www.khronos.org/registry/OpenGL/extensions/NV/NV_texture_barrier.txt" target='_blank'>GL_NV_texture_barrier<sup>↗</sup></a>可能可以允许同时读写同一张贴图,应该可以实现方便的点点点叠加,应该也容易实现笔划(但没有具体看,好像稍微麻烦些,主要是笔画的情况下如何定义自身叠加和非叠加,使用二级图应当能旁路这个问题,不过在不清楚笔画尺寸的情况下需要画多个块拼接)</p><p>通过XInput2可以获得Wacom的压力和倾斜等参数</p>
<div class='imd'><a href='?show_image=20221130215119.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221130215119.jpg" alt="图片" data-imgsrc='20221130215119.jpg'></a></div><p>可以画上去了哈哈哈</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221130152443.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221130152443.jpg" alt="图片" data-imgsrc='20221130152443.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221130152908.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221130152908.jpg" alt="图片" data-imgsrc='20221130152908.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>好了至少能跑起来计算着色器了</p>
<div class='imd'><a href='?show_image=20221127142207.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221127142207.jpg" alt="图片" data-imgsrc='20221127142207.jpg'></a></div><p>由于MyPaint储存为8位sRGB,因此再次打开时出现精度丢失,这是不期望的。</p>
<p>研究发现可以使用计算着色器进行混合。可根据这个原理继续制作画图工具。</p>
<p>此外,如果只是简单混合而没有涂抹,则可以考虑使用<a href="https://registry.khronos.org/OpenGL/extensions/EXT/EXT_shader_framebuffer_fetch.txt" target='_blank'>GL_EXT_shader_framebuffer_fetch<sup>↗</sup></a></p><p>0.1版 完成!</p>
<div class='imd'><a href='?show_image=20221231225645.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221231225645.jpg" alt="图片" data-imgsrc='20221231225645.jpg'></a></div><p>汉化和各种可用性优化</p>
<div class='imd'><a href='?show_image=20221229211521.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221229211521.jpg" alt="图片" data-imgsrc='20221229211521.jpg'></a></div><p>通过 <a href="http://www.gballard.net/photoshop/pdi_download/index.html#downloads" target='_blank'>这里<sup>↗</sup></a> 可以下载一个测试icc以检查icc配置是否正常工作。若正常,则会显示错误颜色</p><p>不错</p>
<div class='imd'><a href='?show_image=20221216230013.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221216230013.jpg" alt="图片" data-imgsrc='20221216230013.jpg'></a></div><p>可以做笔刷了</p>
<div class='imd'><a href='?show_image=20221215215041.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221215215041.jpg" alt="图片" data-imgsrc='20221215215041.jpg'></a></div><p>要复现目前使用的MyPaint笔刷形式,还需要:</p>
<ul>
<li>椭圆比例(或者sdf实现,用以更方便地获得方形)</li>
<li>跟踪速度输入</li>
<li>跟踪方向输入(以及平滑,如何实现)</li>
<li>平滑位置(如何实现)</li>
<li>随机/噪声</li>
</ul>
<p>映射挂件的撤销有问题,暂时还没管那么多,但需要修。</p>
<p>空了来</p><p>新的映射挂件</p>
<div class='imd'><a href='?show_image=20221212213136.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221212213136.jpg" alt="图片" data-imgsrc='20221212213136.jpg'></a></div><p>节点笔刷初步</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221212143028.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221212143028.jpg" alt="图片" data-imgsrc='20221212143028.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221212165735.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221212165735.jpg" alt="图片" data-imgsrc='20221212165735.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>可以撤销了</p>
<p>这样一来所有基本功能已经全部完成了。</p>
<div class='imd'><a href='?show_image=20221211224456.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221211224456.mp4'><source src='images/20221211224456.mp4' type='video/mp4'></video></a></div><p>储存单实例属性需要修改接口,做了个简化的假列表来支持单实例的指定文件保存。</p>
<p>其他的似乎都正常工作,还差导出的合成颜色。</p>
<div class='imd'><a href='?show_image=20221209202452.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221209202452.jpg" alt="图片" data-imgsrc='20221209202452.jpg'></a></div><p>总的来说,还有这些需要实现了才能共享该程序的初步版本:</p>
<ul>
<li>自定义的撤销命令。</li>
<li>工程文件打包。</li>
<li>切割文件导出。</li>
<li>导入导出的选项。</li>
<li>文件管理器的文件名以及过滤选项等优化。</li>
</ul><p>可以文件了</p>
<div class='imd'><a href='?show_image=20221208214258.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221208214258.jpg" alt="图片" data-imgsrc='20221208214258.jpg'></a></div><p>涂抹正确了</p>
<div class='imd'><a href='?show_image=20221206214418.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221206214418.jpg" alt="图片" data-imgsrc='20221206214418.jpg'></a></div><p><a href="http://scottburns.us/subtractive-color-mixture-5/" target='_blank'>http://scottburns.us/subtractive-color-mixture-5/<sup>↗</sup></a></p>
<p>混色看这里</p>
<p>以及这个是mypaint的https://github.com/mypaint/mypaint/blob/master/doc/spectral/spectral.md</p><p>行了,涂抹的逻辑也可以了,虽然涂抹的效果不好,但是可用。</p>
<div class='imd'><a href='?show_image=20221204215655.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221204215655.jpg" alt="图片" data-imgsrc='20221204215655.jpg'></a></div><p>v0.1a,测试Windows版本</p>
<div class='imd'><a href='?show_image=20230127121047.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230127121047.jpg" alt="图片" data-imgsrc='20230127121047.jpg'></a></div><p>win大多数功能能用了</p><p>Windows原生基本上可以了</p>
<p><a href="?post=20230120000903" onclick='ShowWaitingBar()'>这里</a></p><p>现在可以通过WSL运行(但是似乎很慢)</p>
<div class='imd'><a href='?show_image=20230119123642.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230119123642.jpg" alt="图片" data-imgsrc='20230119123642.jpg'></a></div><p><a href="?post=20230114104626" onclick='ShowWaitingBar()'>修了个问题</a></p><p>还是mypaint的光谱混合 但是在gpu了</p>
<div class='imd'><a href='?show_image=20230106164842.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230106164842.jpg" alt="图片" data-imgsrc='20230106164842.jpg'></a></div><p>新笔刷!</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230215152512.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230215152512.jpg" alt="图片" data-imgsrc='20230215152512.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230215152449.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230215152449.jpg" alt="图片" data-imgsrc='20230215152449.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230215152440.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230215152440.jpg" alt="图片" data-imgsrc='20230215152440.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>需要在软件菜单里加个版本日志按钮昂。。。</p><p>实现了迭代控制,因此能方便地制作半色调笔刷了。</p>
<div class='imd'><a href='?show_image=20230208181848.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230208181848.jpg" alt="图片" data-imgsrc='20230208181848.jpg'></a></div><p>涂抹混合有问题,已修复</p><p>导出时图块外背景未转换为对数式,已修复</p><p>好得涂可以实现一种多种颜色笔刷。</p>
<p>一个小的抹颜色区域,或者就在画布上按住某个键给笔刷侧面上色(主要是实现起来方便一些),就可以实现花色笔刷。</p><p>程序纹画布!</p>
<div class='imd'><a href='?show_image=20230907190813.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230907190813.jpg" alt="图片" data-imgsrc='20230907190813.jpg'></a></div><p>可以利用下层特殊图层作为高度,这样采样不花额外性能,并且可以实现手工打底效果。</p><p>现已修复 windows 下 wacom 事件频率导致画笔折线的问题</p><p>要做适用于屏幕的精细笔,将光标沿笔倾斜方向延长偏移以实现笔尖无遮挡</p><p>以 <code>PER_MONITOR_DPI_AWARE</code> 的方式修好了 Wacom 数位板在Windows下映射的问题。</p><p>图像扩充逻辑实际不正确,应当取 xy 的最大最小值而不是 xywh 的最大值,问题在图层有错位时变得明显。(前几天修了)</p><p>做了缩略图</p>
<div class='imd'><a href='?show_image=20240220214524.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240220214524.jpg" alt="图片 keep_inline" data-imgsrc='20240220214524.jpg'></a></div>
<p>需要在系统中加两个文件。一个 <code>mime</code> 到 <code>~/.local/share/mime/packages/</code></p>
<pre><code><?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="image/ourpaint">
<comment>OurPaint file</comment>
<icon name="image"/>
<glob-deleteall/>
<glob pattern="*.ourpaint"/>
</mime-type>
</mime-info></code></pre>
<p>然后是缩略图插件文件 到 <code>/usr/share/thumbnailers/</code></p>
<pre><code>[Thumbnailer Entry]
Version=1.0
Encoding=UTF-8
Type=X-Thumbnailer
Name=OurPaint thumbnailer
MimeType=image/ourpaint;
Exec=/home/yiming/Documents/sync/Projects/2022/laprograms/OurPaint/build/OurPaint --thumbnail %i %o %U</code></pre>
<p>之后就自动建缩略图了。</p><p>需要与画布一起保存附加文字,作为工作笔记(好了)</p><p>lcms转换色彩空间的时候,如果直接从 线性AdobeRGB 转换成 sRGB 则黑处比首先转换成 Gamma2.2 的 AdobeRGB 再转 sRGB 要黑,不清楚为什么,没有迹象表明值有溢出。</p><p>新的图层功能</p>
<ul>
<li>复制</li>
<li>移动</li>
<li>快速切换草稿层可见性</li>
</ul>
<div class='imd'><a href='?show_image=20240310225441.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240310225441.jpg" alt="图片" data-imgsrc='20240310225441.jpg'></a></div><p>之前还做了导入时指定位置的功能</p><p>好得涂现已支持按块移动图层</p><p>好得涂现已支持自定义快捷键,但是功能还不是特别全。</p>2021/12/13 14:20:49 - 2024/03/11 16:35:03https://www.wellobserve.com/?post=20240223143722吃不下2024-02-23T14:37:22+08:002024-02-23T14:37:22+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>吃不下</p>2024/02/23 14:37:22 - 2024/02/23 14:37:22https://www.wellobserve.com/?post=20240222235719感谢 Gray Shuko 先生赠图 :D2024-02-22T23:57:19+08:002024-02-22T23:57:19+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>感谢 Gray Shuko 先生赠图 :D</p>
<div class='imd'><a href='?show_image=20240222235653.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240222235653.jpg" alt="图片" data-imgsrc='20240222235653.jpg'></a></div>2024/02/22 23:57:19 - 2024/02/22 23:57:19https://www.wellobserve.com/?post=20240222113343Valley #3
2024-02-22T11:33:43+08:002024-02-22T11:33:43+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Valley #3</h1>
<p>Yeah yeah... I'll let you have that</p>
<div class='imd'><a href='?show_image=20240222112808.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/20240222112808.jpg" alt="original" data-imgsrc='20240222112808.jpg' data-align="top" style="object-position:top;" class='original_img'></a></div>2024/02/22 11:33:43 - 2024/02/22 11:33:43https://www.wellobserve.com/?post=20211026232009今年过节不收礼
2021-10-26T23:20:09+08:002024-02-21T17:23:37+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>I want these</h1>
<p>您可以送给我下面这些书!</p>
<p><span class='gray'><em>最后更新于2024/02/21</em> 也可以通过 <a href="https://ko-fi.com/chengdulittlea" target='_blank'>Ko-fi<sup>↗</sup></a>。</span></p>
<p><br /></p><p>Dreams Must Explain Themselves</p>
<p>Ursula K. Le Guin</p>
<p>9781473205949</p>
<p>Gollancz</p><p><a href="https://thepolygon.ca/product/tobias-zielony-story-no-story/" target='_blank'>Story / No Story<sup>↗</sup></a> </p>
<p><a href="https://www.kow-berlin.com/artists/tobias-zielony" target='_blank'>Tobias Zielony<sup>↗</sup></a></p>
<p>9783775722841</p>
<p>Hatje Cantz; Bilingual edition (February 28, 2010)</p><p><a href="http://maurovic.com.au/publications" target='_blank'>Shaping Life<sup>↗</sup></a></p>
<p>Richard Maurovic</p>
<p>9781743054468</p>
<p><a href="https://www.wakefieldpress.com.au/product.php?productid=1321" target='_blank'>WakefieldPress<sup>↗</sup></a></p><p> </p>
<p>Rudolph Das & Robert Das</p>
<p> </p>
<p> </p><p>Артбук с дополненной реальностью. Движение миров</p>
<p>Андреев А.В.</p>
<p>9785041094058</p>
<p>БОМБОРА</p><p>Eastern Blocks</p>
<p>Zupagrafika</p>
<p>9788395057434</p>
<p>Zupagrafika</p><p>The Beginning Place: A Novel</p>
<p>Ursula K. Le Guin</p>
<p>9781250191069</p>
<p>Tor Books</p><p>Annals of the Western Shore</p>
<p>Ursula K. Le Guin</p>
<p>9780152051242<br />
9780152062422<br />
9780152066741</p>
<p>HMH Books</p><p>The Birthday of the World: And Other Stories</p>
<p>Ursula K. Le Guin</p>
<p>9780060509064</p>
<p>Harper Perennia</p><p>海门回声</p>
<p><a href="https://www.weibo.com/u/2919608604" target='_blank'>切尸红人魔<sup>↗</sup></a></p>
<p>9789888495610</p>
<p>四季出版社</p><p>Stand Still Stay Silent</p>
<p><a href="http://www.minnasundberg.fi/about.php" target='_blank'>Minna Sundberg<sup>↗</sup></a></p>
<p>9781946698056<br />
9782355743634</p>
<p>Hive Mill</p><p><a href="https://squareeyesgallery.persona.co/" target='_blank'>Square Eyes<sup>↗</sup></a></p>
<p><a href="http://annamill.com/" target='_blank'>Anna Mill<sup>↗</sup></a>, <a href="https://tlukejones.com/" target='_blank'>Luke Jones<sup>↗</sup></a></p>
<p>9780224097222</p>
<p>Jonathan Cape / Penguin Random House</p><p>Not quite straight: A memoir</p>
<p>Jeffrey Smart</p>
<p>9780855617127</p>
<p>W. Heinemann</p><p><a href="https://fuel-design.com/publishing/aeroflot/" target='_blank'>Aeroflot – Fly Soviet<sup>↗</sup></a></p>
<p>Bruno Vandermueren</p>
<p>9781916218468</p>
<p>FUEL</p><p>The Labyrinth</p>
<p><a href="http://simonstalenhag.se/" target='_blank'>Simon Stålenhag<sup>↗</sup></a></p>
<p>9781398509993</p>
<p>Simon & Schuster</p><p>American Surfaces (2005)</p>
<p>Stephen Shore</p>
<p>9781838660628</p>
<p>Phaidon</p><p>SAM Vol. 4 (2019)</p>
<p>Marazano, Richard, 尚效</p>
<p>9781849183673</p>
<p>Cinebook</p><p>LOS ANGELES Deluxe</p>
<p>Sylvain Despretz</p>
<p>9791096315772</p>
<p>Editions Caurette</p><p>Loft Law: The Last of New York City's Original Artist Lofts</p>
<p>Joshua Charow</p>
<p>9788862088152</p>
<p>Damiani</p>2021/10/26 23:20:09 - 2024/02/21 17:23:37https://www.wellobserve.com/?post=20220821113845LaGUI 开发日志
2022-08-21T11:38:45+08:002024-02-20T22:18:07+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>LaGUI Development Log</h1>
<p>Slowly developing...</p>
<ul>
<li>参数改成为Widget了。</li>
<li>支持了按键和中文输入。</li>
</ul><p>简化挂件类型带来的问题是没有办法指定默认 Flag。</p>
<p>可能需要包装成 type{_type, flag} 形式。</p><p>enum挂件简化好了,接下来是字符串简化以及各个挂件的边框等。</p>
<div class='imd'><a href='?show_image=20220830180801.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220830180801.jpg" alt="图片" data-imgsrc='20220830180801.jpg'></a></div><p>界面脚本看上去不能用lua,但是解析起来必须非常简单:</p>
<pre><code>// 预定义
[c] <c>
[base] <b|e|p|pe|.extra>
//具体写
require <b,e> //创建时要求提供base/uie
- c 0.5 cl cr<(20)>;
i [c] [base|apple<.extra>]>path.what <(text: whatever string; flags: maybe|something; ...)> as [apple];
cond either(eq([stuff]>path.what, 123), not(something));
else;
endcond;
</code></pre><p>之后的骨骼和什么的动画参考<a href="https://learnopengl.com/Guest-Articles/2020/Skeletal-Animation" target='_blank'>这个<sup>↗</sup></a>做。</p><ul>
<li>删除了界面实时编辑器。</li>
<li>新的更精简的主题系统。</li>
<li>拆分了 <code>la_resources.c</code> 为多个文件以方便修改。</li>
<li>之后将颜色拾取器改成了符合srgb的样子。</li>
</ul>
<div class='imd'><a href='?show_image=20220829181508.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220829181508.jpg" alt="图片" data-imgsrc='20220829181508.jpg'></a></div><p>ui和从数据接口获得基本数值的应总是假定为阵列(对于int/float/<del>bool</del>/enum)。</p>
<p>udf区分了阵列和单值,后面再来改。</p><p>考虑了节点细节,暂定这样实现:</p>
<ul>
<li>面板显示为多列,每列为一个 Rack/Bank 并且允许分开刷新。画图时仍然画在面板自己的 FBO 上,清空时只清自己的区域。</li>
<li>连线通过Overlay重新画在主缓冲区上就不会干扰子区域内容,需要个新的延后叠加函数。</li>
<li>上下移动可能需要靠一个上下移动挂件在顶部和列表中间,其作用是将下面的挂件向下靠。</li>
</ul>
<p>主要的指导思想是:界面在使用时不需要将逻辑连接方式完全呈现在界面上,例如仪表台总是在背面接线。</p><p>暂定挂件模版的处理方式:</p>
<ul>
<li>应使用专用简易界面脚本进行运行时修改和编辑并同样使用目前的界面模版保存。手动点击整理并运行模版而不在键入时自动操作。</li>
<li>模版显示在面板上通过 <code>SubProp</code> ,因此模版也可以嵌套小模版。<code>ui->PP</code> 只需一个提供给复合挂件,因为希望复合挂件自包含,若挂件需要其他可变配置则通过 <code>UiE</code> 记录呈现(针对独立界面元素的显示等)。</li>
<li>模版可以一键导出为适用于放置入 C 程序的初始化代码。</li>
</ul>
<p>节点和全局时间线可能需要删除,以实现一个统一的驱动系统。节点通过面板选择栏目并以 <code>SubProp</code> 的方式即可显示,连线呈现为 VCV RACK 的类似覆盖样式。被驱动属性的挂件不显示连线,连线的节点是驱动系统节点需要显示的。</p>
<p>这样基本能保证修改最少而且保存了灵活度。</p><p>好的新主题系统算是可以了。去掉了驱动和帧显示,这块要在精简挂件类型后重新设计状态。</p>
<div class='imd'><a href='?show_image=20220826114105.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220826114105.jpg" alt="图片" data-imgsrc='20220826114105.jpg'></a></div><p>主题的精简原则上只保留少数几个主要颜色。若需要样式丰富的挂件则面板应有抗锯齿否则几何符号和圆角画起来困难(一些几何符号可以用unicode符号字代替)。应重新考虑主要挂件的样式。</p>
<p>颜色选择框半边要有透明度。</p>
<p>应精简数值挂件类型,去掉单数值挂件,使用长度为一的阵列作为单数值,数据后台是否能做类似修改尚不清楚,因为二者文件写法似乎不一样。原则上可以直接删掉单数值的接口,同时把现有单数值的接口都改了(可能现有的还很多)。</p><p>需要的布局和可指定在通用挂件上的特征:</p>
<ul>
<li>边框留白宽度(主题和覆盖)</li>
<li>面板和区域不带滚动条</li>
<li>文字对齐方向</li>
<li>无边框视觉</li>
</ul>
<p>可能可以在面板、列表和挂件上添加一个一般标志量来解决这个问题。</p><p>替换为直接使用Unicode符号图标,基本可以正常工作。</p>
<p>原则上还需要再考虑是否要求显示字符直接以宽字符提供,但是目前来看 <code>ExtraInstructions</code> 的解析尚未遇到中断,所以暂时先这样。</p>
<div class='imd'><a href='?show_image=20220824205457.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220824205457.jpg" alt="图片" data-imgsrc='20220824205457.jpg'></a></div><p>图标和emoji基本上能解决了,需要分类生成个字符头文件表才好找,可能不需要子类型,但是至少需要block。</p>
<p>另需要3个noto符号字体才能涵盖所需区域。</p><p>还需要:</p>
<ul>
<li>规范化 <code>ExtraInstructions</code>。之后通过这个来指定挂件外观自定义参数。</li>
<li>文件读写初步恢复。</li>
<li>找图标字体并生成为定义。</li>
<li>精简数值阵列的挂件。</li>
<li>键盘事件和文本框/数字框的输入检查。</li>
<li>应当检查关键帧图表绘图并检查动画系统的适用情况。</li>
<li>行布局。</li>
</ul><p>节点也可以了,虽然暂时不知道有什么用……</p>
<div class='imd'><a href='?show_image=20220821223414.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220821223414.jpg" alt="图片" data-imgsrc='20220821223414.jpg'></a></div><p>鼠标事件和操作等等正常了。</p>
<p>还有些没对的:</p>
<ul>
<li>文件那套还没迁移<ul>
<li>最后应该要做成先写内存然后一步写主文件,读也一样。</li>
</ul>
</li>
<li>边框位移</li>
<li>刷新定时不对</li>
<li>关键帧等各个系统精简</li>
<li>面板尺寸调节</li>
<li>面板最好可以手提浮动和固定</li>
</ul>
<p>总得来说要把整个布局系统精简并且要求有横排和撑尺寸的能力。现在这个太丑了。</p>
<p>之前有个<a href="?post=20211212010220" onclick='ShowWaitingBar()'>老的截图</a></p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20220821113842.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220821113842.jpg" alt="图片" data-imgsrc='20220821113842.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20220821154050.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220821154050.jpg" alt="图片" data-imgsrc='20220821154050.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>又全部改回了多字节字符串,改用自己的unicode/utf8转换。</p>
<p>从属性验证的结果看,要求Hyper2下不能链接Hyper2也不太实际。可能要求存取时仅支持从首级Hyper2实例开始,但这仍然不能解决部分结构改变后重新读取时产生可能冲突的问题。这么来看,Hyper2似乎总是只能是资源并且在任何情况下都不能嵌套。</p><p>资源式的UDF索引表基本上可以了,也可以排除重复的。</p><p>需要为PropContainer指定删除回调,但是加载时应优先覆盖带有同样id的。非id式的应删掉。</p><p>基本上明确了DBInst和撤销的行为:</p>
<ul>
<li>mem获得节点时直接将使用节点挂载到DBInst表上。</li>
<li>读取UDF时获得的节点用先分配,之后通过读到的UID挂到DBInst表上。</li>
<li>撤销栈用与文件类似(?)/相同的结构(由于线性写)。完整版总是保留最近的,而差分则向前指。</li>
<li>不保留实际数据块指针,重做时用读文件的相同的方法进行指针重匹配(但是这个匹配关系需要维护为常在因为引用可以存在于多个撤销步)。<ul>
<li>PtrSync需要有起止范围,指定为撤销步数而不是引用以避免删除步数时检查。</li>
</ul>
</li>
</ul><p>UDF读写单个实例的功能 <del>指针匹配有问题。</del> 开头的问题是<code>memHead::nuid</code>的旧写法导致了一些问题,<del>但是还没有完全解决。</del> 还是,已经解决了。</p>
<ul>
<li><code>DBInst</code>的运行方式对于目前计划的方案可能过于复杂且需要修改。</li>
<li>现在可以追加数据块但不能按UID替换/修改已有(该行为目前仅适用于<code>UDFNoCreate</code>对象),需要探讨行为(追加时改名/修改已有/追加已有子集?)。</li>
<li>尚未做单列表多类节点支持。</li>
</ul>
<p>读取主题以及UID型引用、资源型引用匹配正确。</p>
<div class='imd'><a href='?show_image=20220928143859.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20220928143859.mp4'><source src='images/20220928143859.mp4' type='video/mp4'></video></a></div><p>全自动撤销也有些具体的问题:</p>
<ul>
<li>udf在内存中的布局可以直接作为撤销的一个差分。因为需要自动化则初始文件需要常在(此时每个差分可以做到比较小)。</li>
<li>理论上所有已注册为PropContainer支持的实例都应该放在对应的PC下(实在数据和垃圾桶)。</li>
<li>PointerRecord可以不删?并且建实例的时候自动加进去?</li>
<li>理论上在丢到垃圾桶/撤销栈时就要调用<code>DataBlockNoLongerExists</code>以清除引用,此时应手动推进去相关的状态,之后的新加入的状态不存在对这个玩意的引用,因此这个状态删掉的话,也不需要考虑再次清除潜在引用的事情。这些都基于地址而不是uid因为是运行时。</li>
<li>实现起来比较麻烦的就是实例列表的diff,原理上也行的,因为实际用途中无非也就是几个列表,它们没有界面状态需要联合。</li>
<li>然后再说了。</li>
</ul><p>udf储存行为?</p>
<ul>
<li>基本行为:指定一个属性路径,写属性到文件。</li>
<li>指定属性和部分实例?<del>是否需要指定文件具备强制的从属关系?开启从文件时读/不读主文件?</del><ul>
<li>一个关键的特点:若不允许分离保存,则所有的从属块只能保存在一个文件,而所有的可被分离共享引用的都存在于分离的文件,这使得情况简化:<strong>不需要制作带有父子关系的分离保存支持,分离保存的都没有重叠或包含的部分(但是指针引用可以是任意的)</strong>。</li>
<li>这应该也允许仅引用共享资源块中某个子块的场景,若存在这种情况,仍然需要完全读入该子块的文件。</li>
<li>这种情况下应该也允许局部追加(因此应当需要能载入部分实例,但是在自动读关联时是否这么做还待研究)</li>
</ul>
</li>
</ul><p>暂时要求的udf行为:</p>
<ul>
<li>可设置uid用于在共有资源中统一引用(改名之后就不行了)。</li>
<li>主资源在执行根目录往下的各个都行,结构可以随意改,通过资源文件夹/执行根目录中初始化的<code>.manifest.udf</code>可以了解可访问到的所有资源。</li>
<li>需要<code>manifest selector</code>挂件以从列表中选择文件来加载并设为激活。</li>
<li>manifest表放置在每个PropContainer下面即可。</li>
<li>打开的工程文件的下属目录中也搜索udf并生成表,同名的覆盖掉初始的。</li>
<li>读文件前先读文件夹下的manifest(这些可以限制只读一层或者提供邻近最大搜寻文件数限制,或者是文件夹名字),找完所有需要的udf之后一起将<del>所有文件整体</del>引用到的块读进来。<ul>
<li><del>这是否要求一个引用了许多文件的工程需要一次性把所有的全读了?</del></li>
<li>由于每个文件存在uid地址因此似乎可以选择性读取。</li>
</ul>
</li>
<li>应该_不能_只读局部或者只读单文件而不读关联。在“将局部储存为可复用的模块”时应在写入时自动删除其引用的外部uid。</li>
</ul><p>这里还有个问题是资源性引用的行为尚不明确。目前的UID方法不能直接适应部分共享块,例如另一个用户创建的飞行器模型引用了双方共有的翼型。</p>
<p>将uid改为可自定的id可能是可行的,即使这样还是需要想好仅读取部分文件时的行为(因为要是全部读取那总是能够匹配的)</p><p>想了半天还是去掉数据块作者信息记录,只保留UID和时间。作者可以记录成一个非引用的短字符串,这样就兼容UDF读写的特性。检查了UID列表和数据记录的seek关系似乎没有问题,因此这样一来似乎不需要专门重写一个memfile,在现有的基础上优化即可。</p>
<p><code>HyperData->Linked</code> 可能应改为指向链接进来的UDF这样理论上可以协同修改和选择性保存。UDF的根实例列表应该可以用来做这个事情。</p><p>单列表多类正确了(由于GetPropPath的限制,只允许通过模版访问多类)。</p>
<p>需要:</p>
<ul>
<li>模版优先级。</li>
<li>检查 <code>GetActiveInstanceStrict</code> 的适用性,可能需要用另外的方式指定 sub prop</li>
</ul>
<div class='imd'><a href='?show_image=20220923225103.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220923225103.jpg" alt="图片" data-imgsrc='20220923225103.jpg'></a></div><p>应当将Users放到memhead里面,这样节点本身就不需要那么复杂。</p>
<p>带hyper,不带,和假吧意思的分配要分开。</p>
<p>基本上好了但是类似全局变量这些的用户引用不适用于现在这个方法,这种只有特殊放到container里面去(正常工作了)</p>
<p>接下来需要做单列表多类,然后是新状况下的读写以及指针匹配。</p><p>界面现在可以调了,自动适应菜单面板的尺寸。</p>
<p>面板标题长度没刷新</p>
<div class='imd'><a href='?show_image=20220921222335.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20220921222335.mp4'><source src='images/20220921222335.mp4' type='video/mp4'></video></a></div><p>新的精简的贴图系统基本上可以了,<del>偶尔有绑定贴图状态未刷新的情况,需要检查。</del> 是绑定目标不匹配的问题。</p>
<p>需要:</p>
<ul>
<li>动态增长的绘图命令与图元列表。</li>
<li>字体贴图也做成自动增长的为好。</li>
<li>几个读写的哈希也启动时分配为好。</li>
</ul>
<div class='imd'><a href='?show_image=20220921123549.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220921123549.jpg" alt="图片" data-imgsrc='20220921123549.jpg'></a></div><p>改成3.3以上的。。。好像的确需要一个VAO</p>
<div class='imd'><a href='?show_image=20220919141108.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220919141108.jpg" alt="图片" data-imgsrc='20220919141108.jpg'></a></div><p>更加优化的主题、顶栏、面板分离属性</p>
<p>面板分离属性在改成 <code>UsePropPack</code> 之后好像出问题了……</p>
<div class='imd'><a href='?show_image=20220917210831.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20220917210831.mp4'><source src='images/20220917210831.mp4' type='video/mp4'></video></a></div><p>gamma 好像还是没搞对但是先将就咯</p><p>界面功能上主要就还差多行文字和行式布局(用begin/end方式,不嵌套新行)。行做了。</p>
<p>这两个完成后再来做多列以及面板可选实例。</p><p>之前看过的一个带有有趣的可旋转控件的那个玩意是 <a href="http://anttweakbar.sourceforge.net/doc/" target='_blank'>AntTweakBar<sup>↗</sup></a> :D</p>
<p>啊 基本上这个阶段的修改的差不多了。</p><div class='imd'><a href='?show_image=20220913183542.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20220913183542.mp4'><source src='images/20220913183542.mp4' type='video/mp4'></video></a></div><p>感觉仅限于单个 <code>layout</code> 的浮动面板没什么用,应当删掉。删了</p><p>为保证多类型节点显示简洁可行,需要有<code>gettype</code>And<code>getui</code>两种回调共同工作。(这使得文件读写在这块需要进一步修改)</p>
<p>依靠节点实现的各种,属于程序内部自身的行为,就不使用数据接口来完成了。</p><p>需要:</p>
<ul>
<li><code>laSafeString</code> 做成不限长度动态分配的。</li>
<li><code>memAcquire</code> 做成按尺寸和分配数量自动增加池总数的。</li>
<li>字串属性做 <code>getlength</code>。</li>
<li>做模版上下文和 <code>gettemplate</code>。</li>
</ul><p>还有个多列怎么做的问题,除了行方向排列,还有个问题就是如何方便地上下左右移动。拖动似乎很不好处理。 另外似乎这种分布式列表不是很好布置一个全局的横线分隔。</p>
<p>(至于每列内部可以添加专门的高度分隔挂件,操纵起来稍微麻烦但是写起来简单,视觉上可以理解为填充未使用主板插槽的空白铝片。)</p><p>此外,“数据源选择框”可能可以隐藏,即只显示集合实例对象,数据源可能可以通过初始挂件选择,之后通过上下文菜单(和/或一个很小的浮动按钮)可以切换。</p>
<p>这样一来通过属性树的自定义界面基本就可以不通过任何控件编辑器实现了。</p><p>目前还有的问题就是多面板实例选择查看。可能到最后仍然需要一个实例选择挂件放在最前面,但似乎没有发现这种设计有明显的用途。若仍然以飞行模拟器仪表的多切换为使用场景(即可以选择查看哪一个数据源),需要在不同面板同时显示同类不同数据源信息的情况仍然很少。</p>
<p>之前的分析认为,控件动态布局似乎应由应用程序实现为rack并以集合的形式显示,但显然目前的集合控件不允许类型混排,这使得节点挂架本身的实现也变得复杂这时此前没有注意到的。提供一个实例类型回调似乎可以简化这种状况(此时列表中不同类型的实例可以调用不同类的模版或者挂件),这时不同面板可以在一开始选择目标实例动态显示控件组。</p>
<p>这个“选择数据源”操作在界面上,但好像也一直需要。目前已有的实现还需要检查集合属性的刷新事件,其在何种情况下标记只重绘或者重计算尚没分清楚。</p>
<p>如果要实现多类型集合属性,则又有如何指定挂件类型的新问题。</p>
<p>理论的最小修改:父挂件提供一个上下文编号,集合属性提供一个获得实例模版的回调,带有上下文编号参数。这样允许在不同地方提供不同的挂件模版。</p><p>如果之后要有声音支持则可以考虑rayaudio或者<a href="https://miniaud.io/index.html" target='_blank'>Miniaudio<sup>↗</sup></a>。 另参见rfx和<a href="http://www.drpetter.se/project_sfxr.html" target='_blank'>sfxr<sup>↗</sup></a>的简易音效发生器实现。</p><p>问题:</p>
<p>没有想好挂件布局自定义的自由度级别。由于存在条件判断挂件,完全可视化调节就不方便。带有标签页的面板停靠布局用作显示动态切换似乎足够表示相当多的需要换页的情况。</p>
<p>目前初步认为,应不提供直接修改面板和单个挂件的接口,但允许修改面板和属性包的模版,同时在终端应用程序中只允许按照模版添加面板,同时也可以创建新的面板模版并以脚本方式编辑。这种情况下,原始的挂件对象创建接口似乎多余,但可以保留以更直接地制作更简单的应用程序,<del>内部转换为模版不一定可行,最好的方法是从模版开始创建,而</del>启动时的指令用于生成原始布局,之后布局也可以从文件等读取。</p>
<p>直接创建的函数可以用,应该设计为要求运行在直接模式下。若未要求则运行在模版模式,此时直接创建函数将放在面板模版里,初始化时只填充布局。(也可以方便起见在即时生成后自动以面板名字创建为模版以供之后添加)</p>
<p>这种情况下界面储存和再加载是否通过UDF实现还不清楚。</p><p>似乎屏幕缓冲区不可以绑定为贴图……</p><p>基本上对的,字符编辑,不带选中的,上下左右换行退格都可以了。</p>
<div class='imd'><a href='?show_image=20220902205641.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220902205641.jpg" alt="图片" data-imgsrc='20220902205641.jpg'></a></div><p>需要:</p>
<ul>
<li>移除 2dContainer,改为通用ui列表。</li>
<li>提供 <code>GetStringLength</code> 函数。</li>
</ul><p>G/S/R和全局轴限制基本上可以了</p>
<div class='imd'><a href='?show_image=20221031221535.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221031221535.mp4'><source src='images/20221031221535.mp4' type='video/mp4'></video></a></div><p>框选可以了,稍改进批绘图命令。</p>
<div class='imd'><a href='?show_image=20221029171843.gif' target='_blank' onclick='event.preventDefault();'><img src="images/20221029171843.gif" alt="图片" data-imgsrc='20221029171843.gif'></a></div><p>需要 <code>LA_UDF_RAW</code> 形式的数据供保存和撤销。</p><p>现更有GL选择!</p>
<div class='imd'><a href='?show_image=20221028213836.gif' target='_blank' onclick='event.preventDefault();'><img src="images/20221028213836.gif" alt="图片" data-imgsrc='20221028213836.gif'></a></div><p>节点支持的一系列基本上可以了,有点小问题慢慢改好</p>
<div class='imd'><a href='?show_image=20221026174914.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221026174914.jpg" alt="图片" data-imgsrc='20221026174914.jpg'></a></div><p>多窗口也正常了。</p>
<p>可以开始写文档了。</p>
<p>改进的文字编辑,悬空提示和详细信息,文件管理,更好的全屏等。</p><div class='imd'><a href='?show_image=20221021213250.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221021213250.mp4'><source src='images/20221021213250.mp4' type='video/mp4'></video></a></div><p>现在会阴影了。</p>
<p>着色器和贴图等等一系列的东西要改的来更好用才行,需要避免几个贴图冲突。</p>
<div class='imd'><a href='?show_image=20221019152716.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221019152716.jpg" alt="图片" data-imgsrc='20221019152716.jpg'></a></div><p>现在单片面的片段XY从视角到视线应该是正确的了。显示的是FOV圈。</p>
<p>应计算为(0,0,-1)的变换,之后在ShaderToy找到个RayMarch的着色器,能够正确显示,经检查,尺寸正确匹配,因此可以继续用这个基础做合成渲染。</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221018210017.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221018210017.jpg" alt="图片" data-imgsrc='20221018210017.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221018220517.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221018220517.jpg" alt="图片" data-imgsrc='20221018220517.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221018221351.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221018221351.jpg" alt="图片" data-imgsrc='20221018221351.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>现支持折叠标题、扩大单个区域,以及画布控件真全屏。</p>
<ul>
<li>扩大和全屏的时候应该删掉不用的FBO,再说咯。</li>
</ul>
<div class='imd'><a href='?show_image=20221017174219.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221017174219.mp4'><source src='images/20221017174219.mp4' type='video/mp4'></video></a></div><p>优化了储存逻辑和显示,重新整理了内部画布的流程等,并新增了个简单的贴图检查工具。</p>
<div class='imd'><a href='?show_image=20221016221537.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221016221537.jpg" alt="图片" data-imgsrc='20221016221537.jpg'></a></div><p>分文件保存的逻辑可以了,自动检测需要保存的文件全部写入。</p>
<div class='imd'><a href='?show_image=20221015213833.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221015213833.mp4'><source src='images/20221015213833.mp4' type='video/mp4'></video></a></div><p>储存管理的界面以及一个新的控制台,实现了等宽字符,字都改成动态分配的了,同时等宽尺寸按照汉字的一半。</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221014231138.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221014231138.jpg" alt="图片" data-imgsrc='20221014231138.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221014231156.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221014231156.jpg" alt="图片" data-imgsrc='20221014231156.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>基本上设计好了文件管理方式,另外现在Hyper2可以自动记录修改。需要读写覆盖的数据尽量用Hyper2,部分简单的只供追加而不共享引用的可以不用。</p>
<div class='imd'><a href='?show_image=20221013222715.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221013222715.jpg" alt="图片" data-imgsrc='20221013222715.jpg'></a></div><p>底层基本上能够正确跑了,接下来的功能:</p>
<ul>
<li>自动部分读资源文件</li>
<li>读写的与新的列表结构兼容性检查。(读写还没有动态类型)</li>
</ul>
<p>界面的:</p>
<ul>
<li>可折叠的面板头部</li>
<li>可撕下来的根面板</li>
<li>按列的ui列表</li>
<li>扩展尺寸的控件</li>
<li>可全屏的面板</li>
</ul><p>好了李论上撤销已经正常工作了,接下来只需要做那个中途开始做的清理即可。</p><p>subprop行为:</p>
<ul>
<li>全0/给offset:指针</li>
<li>给LOCAL:偏移(给别的都丢掉LOCAL)</li>
<li>给SINGLE:指针创建</li>
<li>只给list则视为表</li>
<li>给Get则丢掉list (只有Get的视为SINGLE,有next的默认忽略撤销/储存)</li>
</ul>
<p>这样储存时也只需要表或者单一Get一个。自定义的Get表只适用于用户界面。</p><ul>
<li>删除Append回调,并使用PostRead/PostReadIM/SelfFree来支持读取和撤销/重做。</li>
</ul><ul>
<li>仅为撤销记录 块+PC似乎可行,而不需要结构化。实例列表差分在 P 下面,而且只记录引用差别。</li>
<li>应当删除对 <code>UseLinkItem</code> 的支持以更好地兼容指针反引用的特点。</li>
</ul><ul>
<li>所有引用形式的指针需要反引用。在使用时统一用指针使用接口,在set时也在内部调用,这使得删除数据块时自动解除引用(在添加用户时提供回调,同时也在数据块删除处提供另一个),也可以满足撤销和重做的场景。记录时要记录删除回调之前之后的(因为用户可能不将指针置为0)。</li>
<li>不允许Hyper2下挂Hyper2。</li>
<li>Hyper2下加可读标识,UID不变。</li>
<li>资源在读任意UDF时候追加资源目录下的,不删除。关联需要用户自己储存的时候注意。</li>
</ul><p>可以存取用户设置和输入映射了</p>
<p>同时插座现在可以显示标签</p>
<div class='imd'><a href='?show_image=20221117215154.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221117215154.jpg" alt="图片" data-imgsrc='20221117215154.jpg'></a></div><p>可以驱动物体了</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221114204715.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221114204715.jpg" alt="图片" data-imgsrc='20221114204715.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221114213721.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221114213721.jpg" alt="图片" data-imgsrc='20221114213721.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>DAG 应该也正常了,做了一个映射网。</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20221110223826.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20221110223826.mp4'><source src='images/20221110223826.mp4' type='video/mp4'></video></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20221110224324.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221110224324.jpg" alt="图片" data-imgsrc='20221110224324.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>基本操作都可以了,还差:</p>
<ul>
<li>局部变换</li>
<li>光标</li>
<li>环切</li>
<li>导角</li>
</ul>
<p>但这些都可以后面再慢慢做。</p>
<div class='imd'><a href='?show_image=20221109212909.gif' target='_blank' onclick='event.preventDefault();'><img src="images/20221109212909.gif" alt="图片" data-imgsrc='20221109212909.gif'></a></div><p>可以选择边了,因此可能可以做那个什么环切了。</p>
<div class='imd'><a href='?show_image=20221108173707.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221108173707.jpg" alt="图片" data-imgsrc='20221108173707.jpg'></a></div><p>目前退出时候的问题应该主要是删除撤销时的状态与目前的状态不符。鉴于内存都使用mem建立,可以不要这一步。</p><p>更新了memLeave的行为,现在能在两次撤销之间添加并删除那些将不存在于前一个和后一个状态的内存节点了(只要都使用memLeave),此时可以兼容多步修改、手工和带有/不带撤销的修改。</p>
<div class='imd'><a href='?show_image=20221107225428.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221107225428.jpg" alt="图片" data-imgsrc='20221107225428.jpg'></a></div><p>面板由于自动用户无法干净删除,使其在关闭后可能导致停机。(<del>好了修好了,现在删的特别干净23333</del> 其实还是没有。。。应当用面板保留节点然后最后退出时统一删面板节点不然目前的PropPack更新行为意味着无法删除所有用户(行了就是这么修的就这样吧))</p><p>撤销又改改改改改然后最后还是要撤销系统保留所有指针不释放因为半途释放会有重复地址造成的模糊问题(并且此时仅使用指针生命期则无法判别)。</p>
<p>另外支持了RAW撤销和重做。</p><p>去掉了Scene,直接用RootObject,基本上又恢复正常工作了。</p>
<p>需要将键位处理成能够ThisCall的。</p><p>映射图挂件的撤销有问题</p><p>Win 的大多数功能基本上能跑了</p><p>Win下的窗口什么的可以了,还有输入设备和文件等等一堆小东西不行。</p>
<div class='imd'><a href='?show_image=20230120000838.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230120000838.jpg" alt="图片" data-imgsrc='20230120000838.jpg'></a></div><p>Win下支持了WinTab</p><p>修复了拆面的拓扑错误问题(应该没事了)</p>
<div class='imd'><a href='?show_image=20230320210316.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230320210316.jpg" alt="图片" data-imgsrc='20230320210316.jpg'></a></div><p>修复了合并网格物体的面引用问题。</p><p>目前有些问题:</p>
<ul>
<li>没有统一的物体复制功能<ul>
<li>节点没有复制(用Prop/UDF复制似乎很麻烦)(好了现在用节点自己复制了)</li>
</ul>
</li>
<li>删除驱动页功能(可以了)</li>
<li>再加上启动时的模块注册参数,然后再做成引擎</li>
<li>然后再是实例状态匹配树</li>
</ul>
<p>(当然工具都是要有撤销的)</p><p>实例器做好了,包括固定分离实例等改变。</p>
<div class='imd'><a href='?show_image=20230426205416.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230426205416.jpg" alt="图片" data-imgsrc='20230426205416.jpg'></a></div><p>做了Holder和 <code>__actions__</code> 列表还有 <code>verify</code> 现在应该可以了 </p><div class='imd'><a href='?show_image=20230422194843.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230422194843.jpg" alt="图片" data-imgsrc='20230422194843.jpg'></a></div><p>动画数据的储存怎么操作还不清楚。目前的状况似乎要求每个Action挂在某个ID块下面,同时不允许储存别的ID块下面的属性。界面上怎么实现不清楚,因为它应该不能简单地就放在3d物体下。</p><p>基本上逻辑是通的了</p>
<div class='imd'><a href='?show_image=20230417230519.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230417230519.mp4'><source src='images/20230417230519.mp4' type='video/mp4'></video></a></div><p>新!非绝对帧的动画系统有一个基本的UI了。</p>
<div class='imd'><a href='?show_image=20230416215222.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230416215222.mp4'><source src='images/20230416215222.mp4' type='video/mp4'></video></a></div><p>简易合并也可以了。</p>
<div class='imd'><a href='?show_image=20230415151534.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230415151534.mp4'><source src='images/20230415151534.mp4' type='video/mp4'></video></a></div><p>透选也可以了</p>
<div class='imd'><a href='?show_image=20230414213103.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230414213103.jpg" alt="图片" data-imgsrc='20230414213103.jpg'></a></div><p>环切和链式/环式选择基本也可以了。</p>
<div class='imd'><a href='?show_image=20230413215816.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230413215816.mp4'><source src='images/20230413215816.mp4' type='video/mp4'></video></a></div><p>切割工具似乎可以了</p>
<div class='imd'><a href='?show_image=20230413162538.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230413162538.mp4'><source src='images/20230413162538.mp4' type='video/mp4'></video></a></div><p>优化了主题留白尺寸细节,以及行布局尺寸管理。</p>
<div class='imd'><a href='?show_image=20230412160242.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230412160242.jpg" alt="图片" data-imgsrc='20230412160242.jpg'></a></div><p>合并物体的撤销有问题(修了,用maxf作为参考长度,可能行了)</p><p>示波器</p>
<div class='imd'><a href='?show_image=20230526182631.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230526182631.mp4'><source src='images/20230526182631.mp4' type='video/mp4'></video></a></div><p>把小房子引擎的音频合成移动到了lagui这样可以统一管理</p><p>现已在 Linux 和 Windows 上支持wacom笔杆旋转!</p><p>Tab 最好要有竖置标签</p><p>整理了界面一些问题,修了 GL Context ,然后还要检查面板放置和尺寸确认时是否有重复工作,还有windows下GL调试不遵守过滤的问题。</p><p>此外使用 <code>glDebugMessageCallback</code> 即可调试错误和性能信息。</p><p>从这里来看VAO和FBO似乎是不共享的,看来需要每个窗口绑定一次。</p>
<p>这可以解释今天在NV卡上的闪烁行为。</p>
<p><a href="https://community.khronos.org/t/sharing-contexts/73563/2" target='_blank'>https://community.khronos.org/t/sharing-contexts/73563/2<sup>↗</sup></a></p><p>音频设备选择</p>
<div class='imd'><a href='?show_image=20230726203300.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230726203300.jpg" alt="图片" data-imgsrc='20230726203300.jpg'></a></div><p>单实例在撤销丢弃时似乎是没有删掉的,好像没有针对这个的机制。需要检查。</p><p>大流程 然后完善了一些东西</p>
<div class='imd'><a href='?show_image=20230829220329.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230829220329.mp4'><source src='images/20230829220329.mp4' type='video/mp4'></video></a></div><p>原来glShaderSource可以指定多个连在一起。。。</p><p>程序纹,但是暂时还不能驱动,也没有运行复制。</p>
<div class='imd'><a href='?show_image=20230828174358.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230828174358.jpg" alt="Images" data-imgsrc='20230828174358.jpg'></a></div><p>多个实例应该也正常了,只编译一次脚本</p>
<div class='imd'><a href='?show_image=20230820165144.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230820165144.mp4'><source src='images/20230820165144.mp4' type='video/mp4'></video></a></div><p>可以通过 <code>ffi.C</code> 调内部函数跑物体了</p>
<div class='imd'><a href='?show_image=20230819160911.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230819160911.mp4'><source src='images/20230819160911.mp4' type='video/mp4'></video></a></div><p>跑起来了跑起来了</p>
<div class='imd'><a href='?show_image=20230817115130.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230817115130.mp4'><source src='images/20230817115130.mp4' type='video/mp4'></video></a></div><p>luajit 作为内置控制台可以用了</p>
<div class='imd'><a href='?show_image=20230815180948.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230815180948.mp4'><source src='images/20230815180948.mp4' type='video/mp4'></video></a></div><p>需要 Word wrap 而不是简单的超界换行</p><p>改把改把</p>
<div class='imd'><a href='?show_image=20230802211608.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230802211608.jpg" alt="图片" data-imgsrc='20230802211608.jpg'></a></div><p>DVD!
</p><div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230919141807.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230919141807.jpg" alt="图片" data-imgsrc='20230919141807.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230919141847.mp4' target='_blank' onclick='event.preventDefault();'><video controls data-imgsrc='20230919141847.mp4'><source src='images/20230919141847.mp4' type='video/mp4'></video></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>经验证,复制动画系统在存取之后依然正常工作。</p><p>应当让脚本的 <code>self</code> 指向 <code>scene.node</code> 而不是 <code>m</code></p><p>按照目前的情况来看,复制和重定向比反向引用更加实用且符合设计(做了)</p><p>动画系统在带有播放复制的情况下不工作,暂时不知道这个怎么处理。</p>
<p>(做了,用复制的方式)</p><p>evdev 读的操纵杆按键和绝对值轴编号不连续,需要做个映射: <code>u8bit btns[127], axis[64];</code> ,按键在这些范围,轴编号是连续的:</p>
<pre><code>BTN_MISC 0x100 ~ 0x151 BTN_GEAR_UP
BTN_DPAD_UP 0x220 ~ 0x223 BTN_DPAD_RIGHT
BTN_TRIGGER_HAPPY 0x2c0 ~ 0x2e7 BTN_TRIGGER_HAPPY40</code></pre>
<p>做了</p><p>原则上 ModalOver 的做法并不合适,空了要重新检查退出</p><p>需要有字符截断功能然后做拖动背景式的滑块,然后再有更好的复合挂件。</p>
<p>截断单独开个开关函数,不然现在的参数太多了,虽然实现差不太多(可以了)</p>
<div class='imd'><a href='?show_image=20240123134312.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240123134312.jpg" alt="图片" data-imgsrc='20240123134312.jpg'></a></div><p>复合挂件</p>
<div class='imd'><a href='?show_image=20240122223341.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240122223341.jpg" alt="图片" data-imgsrc='20240122223341.jpg'></a></div><p>大文字挂件在重绘时应当更新,如果当前正在编辑则不更新,或者直接做成实时更改。</p><ul>
<li>改好了假 RAW PROP 读取。</li>
<li>现有简易 RAW PROP 直读适用于缩略图等快速读文件场景。</li>
<li>有 PropSaveAlongside 适用于始终需要在每个文件保存的场景,例如缩略图,版权信息,什么的。</li>
</ul><p>插入关键帧之后没有推撤销</p><p>可能需要自动在打开文件的文件夹中再找额外udf</p><p>通过节点的键盘事件触发</p>
<p>需要改改键值的分配或者做个桥接。</p>
<div class='imd'><a href='?show_image=20240206215529.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240206215529.jpg" alt="图片" data-imgsrc='20240206215529.jpg'></a></div><p>事件处理的节点还没有(有基本的键盘了)</p><p>需要禁止播放器的编辑键位表,有可能做一个单独的挂件类型。</p><ul>
<li>音频节点撤销的时候要有 <code>UndoTouched</code> 回调以恢复PLEN以及其他自分配的对象。</li>
</ul><p>要检查为什么总是会弹出保存而且也是保存所有</p><p>原则上还是要保存主题的。按名字分文件自动保存好了。</p><ul>
<li>显示器色彩空间配置和自动应用功能(可以了)</li>
<li>控制器配置保存(好像也可以了)</li>
</ul><ul>
<li>照相机物体(原来就有) 以及编辑器里对正功能</li>
<li>播放器的照相机 场景默认照相机(做了)</li>
</ul><p>之后可能还需要物体自定义数据一并保存的功能,要能获得 <code>tns_object</code> 然后追加一些适用于 <code>CustomData</code> 的属性,并指定 <code>get_type</code> ,但具体操作还不清楚,可能最后并不能这样做。</p>
<ul>
<li>有可能可以扩展 <code>get_type</code> 然后就能加自己类型的物体了。</li>
</ul><p>距离可以直接开始利用小房子引擎的功能制作小游戏还差一些琐碎的支持没有实现:</p>
<ul>
<li>驱动页节点运行(已经就直接可以了)</li>
<li>动画播放暂停(节点可以了)</li>
<li>动画切换以实例还是以原始(节点可以了)</li>
<li>动画指定时间(节点可以了)<ul>
<li>注意这里尚未给实例节约求值。</li>
</ul>
</li>
<li>音频播放停止等(触发节点和驱动控制节点也都可以了)</li>
<li>音频单实例触发(可以了)</li>
<li>扬声器物体</li>
<li>音频长度和重触发信号(可以了)</li>
<li>音频状态输入和在一个 <code>PLEN</code> 长度里插值缓冲</li>
<li>音频通道音量调节函数和节点</li>
<li>读写实例和引用物体状态量的节点</li>
</ul>2022/08/21 11:38:45 - 2024/02/20 22:18:07https://www.wellobserve.com/?post=20211020225213网上邻居2021-10-20T22:52:13+08:002024-02-17T13:06:33+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Internet Neighbour</h1>
<p>链接到互联网上其他有趣的角落。</p><p><a href="https://stumbled.to/" target='_blank'>https://stumbled.to/<sup>↗</sup></a></p>
<p>随机去网站</p><p><a href="https://rmkit.dev/blog" target='_blank'>https://rmkit.dev/blog<sup>↗</sup></a></p>
<p>reMarkable app制作博客</p><p><a href="https://humanoidhistory.tumblr.com/archive" target='_blank'>Humanoid History<sup>↗</sup></a></p><p><a href="https://e05.code.blog/" target='_blank'>https://e05.code.blog/<sup>↗</sup></a></p>
<p>宇航美术博客</p><p><a href="https://webring.xxiivv.com/" target='_blank'>https://webring.xxiivv.com/<sup>↗</sup></a></p><p><a href="https://ninfex.com/" target='_blank'>https://ninfex.com/<sup>↗</sup></a></p>
<p>人工索引的搜索引擎</p><p><a href="https://www.bikeexif.com/" target='_blank'>https://www.bikeexif.com/<sup>↗</sup></a></p>
<p>摩托车</p><p><a href="https://tinytexashouses.com/" target='_blank'>https://tinytexashouses.com/<sup>↗</sup></a></p><p><a href="https://skyvector.com/" target='_blank'>https://skyvector.com/<sup>↗</sup></a></p><p><a href="https://opengeofiction.net" target='_blank'>https://opengeofiction.net<sup>↗</sup></a></p>
<p>虚构地图</p><p><a href="http://stargazer2006.online.fr/index.htm" target='_blank'>http://stargazer2006.online.fr/index.htm<sup>↗</sup></a></p><p><a href="https://www.aerospaceprojectsreview.com/" target='_blank'>https://www.aerospaceprojectsreview.com/<sup>↗</sup></a></p><p><a href="https://e05.code.blog/" target='_blank'>https://e05.code.blog/<sup>↗</sup></a></p><p><a href="https://subconscious.substack.com/" target='_blank'>https://subconscious.substack.com/<sup>↗</sup></a></p><p><a href="http://www.logobook.com" target='_blank'>http://www.logobook.com<sup>↗</sup></a></p><p><a href="https://lieu.cblgh.org/" target='_blank'>https://lieu.cblgh.org/<sup>↗</sup></a></p>
<p>搜索xxiivv电话本</p><p><a href="https://www.quintbuchholz.de/" target='_blank'>https://www.quintbuchholz.de/<sup>↗</sup></a></p>
<p>Quint Buchholz</p><p><a href="https://www.tomaswatson.com/art" target='_blank'>https://www.tomaswatson.com/art<sup>↗</sup></a></p>
<p>Tomas Watson</p><p>Edward Loxton Knight</p><p><a href="http://www.a320.at" target='_blank'>http://www.a320.at<sup>↗</sup></a></p><p><a href="http://wakrec.blogspot.com/" target='_blank'>http://wakrec.blogspot.com/<sup>↗</sup></a></p>
<p>arduino风琴等</p><p><a href="https://www.jaredpike.art/" target='_blank'>https://www.jaredpike.art/<sup>↗</sup></a></p><p><a href="https://www.foldnfly.com" target='_blank'>FoldnFly<sup>↗</sup></a></p><p><a href="http://www.michieldb.nl/" target='_blank'>http://www.michieldb.nl/<sup>↗</sup></a></p>
<p>Posy</p><p><a href="http://narf.pl/" target='_blank'>http://narf.pl/<sup>↗</sup></a></p><p><a href="https://nicolemclaughlin.com" target='_blank'>https://nicolemclaughlin.com<sup>↗</sup></a></p><p><a href="https://www.640by480.com/" target='_blank'>https://www.640by480.com/<sup>↗</sup></a></p><p><a href="https://uer.ca/" target='_blank'>https://uer.ca/<sup>↗</sup></a></p>
<p>Urban Exploration Resource</p><p><a href="https://maps.nls.uk/geo/explore/" target='_blank'>https://maps.nls.uk/geo/explore/<sup>↗</sup></a></p>
<p>比对历史地图</p><p><a href="https://docs.google.com/spreadsheets/d/1KWIzznlFNs_rQCEzW5ub6ehwaLcwR80xbuOokXwRa_Y/edit#gid=0" target='_blank'>The Big Artist Opportunities Directory<sup>↗</sup></a></p><p><a href="https://skipperpress.com" target='_blank'>https://skipperpress.com<sup>↗</sup></a></p>
<p>军事主题涂</p><p><a href="https://donatoarts.com/" target='_blank'>https://donatoarts.com/<sup>↗</sup></a></p>
<p>古典科幻涂</p><p><a href="https://robertwattsconceptsketches.com/blog/" target='_blank'>https://robertwattsconceptsketches.com/blog/<sup>↗</sup></a></p><p><a href="https://www.lukejerram.com/artworks/" target='_blank'>https://www.lukejerram.com/artworks/<sup>↗</sup></a></p>
<p>做垂直光</p><p><a href="https://www.artnet.com/artists/robert-r-bliss" target='_blank'>https://www.artnet.com/artists/robert-r-bliss<sup>↗</sup></a></p><p><a href="https://thenewriver.us/" target='_blank'>https://thenewriver.us/<sup>↗</sup></a></p><p><a href="https://www.zack-art.com/" target='_blank'>https://www.zack-art.com/<sup>↗</sup></a></p><p>Pierre Joubert</p><p><a href="https://blog.dazhu1988.com/" target='_blank'>https://blog.dazhu1988.com/<sup>↗</sup></a></p><p><a href="https://www.macin.org/" target='_blank'>https://www.macin.org/<sup>↗</sup></a></p><p><a href="https://www.iyuxiyang.com" target='_blank'>https://www.iyuxiyang.com<sup>↗</sup></a></p><p><a href="https://99gifshop.neocities.org" target='_blank'>https://99gifshop.neocities.org<sup>↗</sup></a></p>
<p>gif商店</p><p><a href="http://www.sweethome3d.com" target='_blank'>http://www.sweethome3d.com<sup>↗</sup></a></p><p><a href="https://shhhitsfine.tumblr.com/archive" target='_blank'>https://shhhitsfine.tumblr.com/archive<sup>↗</sup></a></p><p><a href="https://www.jaynestokes.com/" target='_blank'>https://www.jaynestokes.com/<sup>↗</sup></a></p>
<p>火柴盒图画</p><p><a href="https://katja-lang.com/" target='_blank'>https://katja-lang.com/<sup>↗</sup></a></p><p><a href="https://twitter.com/LucCourtois1" target='_blank'>https://twitter.com/LucCourtois1<sup>↗</sup></a></p><p><a href="https://shhhitsfine.tumblr.com/archive" target='_blank'>https://shhhitsfine.tumblr.com/archive<sup>↗</sup></a></p>2021/10/20 22:52:13 - 2024/02/17 13:06:33https://www.wellobserve.com/?post=20240217120114@到了2024-02-17T12:01:14+08:002024-02-17T12:01:14+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p><a href="https://twitter.com/gunalbum/status/1725673653021368630" target='_blank'>长的气动手枪<sup>↗</sup></a></p>2024/02/17 12:01:14 - 2024/02/17 12:01:14https://www.wellobserve.com/?post=20240217113219@到了2024-02-17T11:32:19+08:002024-02-17T11:32:19+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p><a href="https://twitter.com/manedpizzawolf/status/1739284864342331520/photo/1" target='_blank'>天狗<sup>↗</sup></a></p>2024/02/17 11:32:19 - 2024/02/17 11:32:19https://www.wellobserve.com/?post=20240217113127@到了2024-02-17T11:31:27+08:002024-02-17T11:31:27+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p><a href="https://twitter.com/Tokyozilla/status/1740853177883492832" target='_blank'>龙车<sup>↗</sup></a></p>2024/02/17 11:31:27 - 2024/02/17 11:31:27https://www.wellobserve.com/?post=20240217112906@到了2024-02-17T11:29:06+08:002024-02-17T11:29:06+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p><a href="https://twitter.com/femdad69420/status/1741601523636039946" target='_blank'>堆罐子的小孩<sup>↗</sup></a></p>2024/02/17 11:29:06 - 2024/02/17 11:29:06https://www.wellobserve.com/?post=20240216220249emmmm2024-02-16T22:02:49+08:002024-02-16T22:02:49+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emmmm</p>2024/02/16 22:02:49 - 2024/02/16 22:02:49https://www.wellobserve.com/?post=20240212145801除非快门的尺寸和驱动结构可能拥挤一些,别的原理上都相对容易做。2024-02-12T14:58:01+08:002024-02-13T15:37:21+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>除非快门的尺寸和驱动结构可能拥挤一些,别的原理上都相对容易做。</p>
<p><a href="?post=20231122000353" onclick='ShowWaitingBar()'>额</a></p><p>如果不是反光取景,则快门可以更加简单</p><p>TTL取景器的目镜原理上可以直接找手机扩展镜头</p><p>胶片用一般35mm,但是往复记录,每次只用半边。快门轴从胶片外侧伸入,暂停机可以放同侧或者异侧。</p><p>有可能整个机身和片盒都可以用钣金来做。一些紧固件和轴座一类的东西可能需要铣出来</p>2024/02/12 14:58:01 - 2024/02/13 15:37:21https://www.wellobserve.com/?post=20231227221353将网站的帖子区域更换为表格形式了。2023-12-27T22:13:53+08:002024-02-13T12:21:06+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>将网站的帖子区域更换为表格形式了。</p><p>这个css可以说是有那么一点扯淡了</p><p>好麻烦</p><p>基本可以了,还差打印机样式没修好</p><p>可能需要把所有连接都加上下划线 这样更加可视</p>2023/12/27 22:13:53 - 2024/02/13 12:21:06https://www.wellobserve.com/?post=20240207173206不整了先2024-02-07T17:32:06+08:002024-02-07T17:32:06+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>不整了先</p>2024/02/07 17:32:06 - 2024/02/07 17:32:06https://www.wellobserve.com/?post=20240122134441行了所有图都压缩了2024-01-22T13:44:41+08:002024-01-22T13:44:41+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>行了所有图都压缩了</p>2024/01/22 13:44:41 - 2024/01/22 13:44:41https://www.wellobserve.com/?post=20210928175018那么的维基日志
2021-09-28T17:50:18+08:002024-01-22T11:44:57+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>那么的维基日志</h1>
<p>所以可以开始在新站点说话了,好评</p><p>翻译</p><p>还有草稿本地储存</p><p>移动端大图菜单再黑点</p><p>要有个自动重定向设置,名字匹配和跳转帖子即可,十分简单</p><p>最近回复目标点击链接应该是第一句而不是最后一句</p><p>另外把帖子内容放到页面标题上这样历史记录也好搜索</p><ul>
<li>CSS不需要每次都覆盖</li>
</ul><p>还没做关于页呢,这些再慢慢丰富咯……</p><ul>
<li>顶栏也有问题了</li>
</ul><ul>
<li>打印样式也还没做</li>
</ul><ul>
<li>移动端脚注也有问题</li>
<li>admin弄好</li>
</ul><ul>
<li>还有翻译以及针对导航栏等条目的翻译设置,把原来的cookie搬过来,之后还是弄个谷歌翻译按键</li>
</ul><p>目前有的一些问题:</p>
<ul>
<li>相册移动端的文件夹切换没弄。</li>
<li>没得删除。</li>
<li>应该把特殊页面从最初时间线去掉(或许没有那么必要——)</li>
<li>搜索还没做</li>
</ul><p><a href="?post=20211026161001" onclick='ShowWaitingBar()'>Ref</a></p><p>可能需要加上个rss功能(加上了)</p><p>首页引用文链接超宽等问题</p><p>可能还需要个https带参数转发,不过再看了</p><p>现在可以一键发邮件询问感兴趣的图片</p>
<div class='imd'><a href='?show_image=20211022140333.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20211022140333.jpg" alt="咨询按钮" data-imgsrc='20211022140333.jpg'></a></div><p>因为缩进后字本身也变小所以在对话和引用中可以考虑做成箭头样子就不用盒子形式<del>(链接的保留为盒子?)</del></p><ul>
<li>图片下载的名字要可识别</li>
<li>另外图片移动端详细滚动加高</li>
<li>延迟滚动到帖子</li>
<li>移动端相册选择列表有问题</li>
<li>当前文章做成带阴影或者别的识别的,不然字那么大好像也不好看</li>
</ul><p>还有相册主要标记</p><p>要做主页相册,不然直接显示全部有点乱</p><p>长文应该在话题第一篇文开头标记 之后不用 显示时候不放大字体但是用一种方式指示目前的文章。</p><p>底下的网站标题不要弄链接要点错</p><p>如果目前这个站直接发超长文直接就刷屏了,所以还是有要改的地方。</p><p>还有外链整成个带小箭头的可能好看</p><p>可点击的回复可能要做个框什么的以示区别</p><p>链接要做成话题总的,不然翻起来麻烦因为每句话很短。移动端还要加个数字。(只是做成了引用计数)</p><p>可以在最近标题位置显示过去二十四小时更新的条目数量,之后还能弄个统计页</p><p>这个新建相册还会出现500问题</p><p>一段多图时候还是出现了空段落</p><p>需要私用笔记本</p>
<p><a href="?post=20211123164557" onclick='ShowWaitingBar()'>笔记本</a></p><p>图片替换和改名也可以了</p><p>大图margin-bottom要改为初始</p><p>大图重复时候会循环:</p>
<p><a href="?post=20211106205308" onclick='ShowWaitingBar()'>Ref</a></p><p>新做了基于imagemagick的图像后端,现在图像也不会出问题了。</p><p>图片通过CDN的也不能强制直接转HTTPS(但看上去请求是HTTPS的,按理说不会转)…… 这个可能要用户自己调了。</p><p>关联帖子:</p>
<p><a href="?post=20211005104204" onclick='ShowWaitingBar()'>Ref</a></p><p>gif下载扩展不对(出于某种原因似乎又对了……)</p><p>画廊要变大才行</p><p>应该做一个按照语言标签显示对应段落的功能,不然随时去调翻译文件就非常蠢。(这么久之后终于做好勒)</p><p>加入了评论功能。</p>
<p>但是还差ip限制和评论后台列表查看功能。</p><p>里站图示方式要改改……</p><p>翻译按钮,丢到顶上了。</p><p>关联文章排序应该反过来</p><p>打印的<code>p_row</code>底部留白不正确</p>
<p>第一个h的顶部留白不正确(可能不容易操作)</p>
<p>这些东西其实都是因为将帖子分了div。应考虑不这么做时帖子访问按钮位置的设置,这样一来引用文等样式表也简单了。</p>
<p>更新底部留白问题:单图片也要用div加一层,overflow不能hidden,具体为什么这样设置样式表需要调查,这些都该应可以简化。</p><p>打印样式还要仔细调</p><p>修复了改名导致全没的Bug</p><p>应该有一种任务列表形式的东西,或者索引工具,可以将帖子加进去。(这个做了)</p>
<p>另外还有不定期回顾帖子功能等。</p><p>底栏等深度不对</p><p>理论上搜索并没有正确处理主题帖中多个带关键词帖子的情况。(现在处理了)</p><p>可能要移除评论功能然后做成邮件订阅,因为人们似乎不倾向于在无聊的地方留评论。</p><p>关于长文/维基式推特的设计:</p>
<p><a href="?post=20220214011442" onclick='ShowWaitingBar()'>长文</a></p><p>主页可以有自定义内容而不是乱七八糟的东西,那样会好看些;目录似乎应该直接移动到文章顶部而不是放侧面。</p><p>帖子标记的版本也要从版本中获得而不是直接来用最新(修好了,是重检查话题时没有清空已设置的标志位)。</p><p>以及将配置文件转换成以PHP格式储存以减少因攻击造成的泄漏。(可以了)</p><p><a href="?post=20220307151507" onclick='ShowWaitingBar()'>制作IndieAuth</a>以与其他兴趣自建网对接。(可以了)</p><p>有趣栏目表格内图片位置和尺寸不正确,应当里外加100%宽度和flex。(行了修好了)</p><p>另外未启用JS下的阅读/导航还没有完全保证,主要是针对图片。编辑和发新帖可以作为当前选择帖子的操作,就不需要菜单。(图片现在可以了,菜单什么的之后再看,因为浏览已经没有什么问题<del>,不过图片在非脚本情况下最好可以重定向到一个能显示关联帖子的页面</del>,图片现在非js点击也会出现详细情况页面了)</p><p>或许需要一个输入相册口令查看隐藏相册的功能</p><p>实现了一键发送到长毛象的功能!</p>
<p><a href="?post=20220415111143" onclick='ShowWaitingBar()'>像这样</a></p><p>在之后的某个时候应该会将脚本做成链接的文件以减轻页面加载负担。</p><p>为相册添加了小功能:指定了主图的图片会显示为窄条以节省屏幕空间并将视觉重点转向主图。(昨天弄好了)</p><ul>
<li>回复的时候不能转直接引用这样太蠢了。。。(改了)</li>
<li>引帖子和图片的时候第一次并没有加入引用,应检查是什么导致这个问题。(新帖子只赋值了<code>real_content</code>而没有赋值<code>content</code>导致<code>CachePostLinks</code>时出错,重定向隐蔽了出错信息)</li>
</ul><p>支持了“在这里”功能。</p><p><del>需要将帖子列表改成真正的表格以允许点击链接</del> 不行因为这样就不能有效地分栏了。</p><p>需要可以管理MP4和其他文件的功能。(加上去了)</p><p>“在这里”需要有直接查看相册的功能,或者目前的状况下做个汇总帖子。首页可能需要列举导航。</p><p>需要可以指定图片缩略图朝顶部对齐方法。(好了)</p><p>支持了图片式链接。但是需要可指定高度不然看起有点奇怪。(可以了,在图片alt里输入<code>4em</code>即可)</p><p>需要短链接到相册。(做了,做成了<code>?</code>之后任意字符串)</p><ul>
<li>可以指定宽话题或者帖子打印。</li>
<li>修复了独立图片页面的一些问题。</li>
<li>改了下这里和实验网的显示。</li>
</ul><p>从目前的布局来看,“在这里”的底部不应该有导航栏。</p><p>应当将相册改为不显示时间而带有渐进加载的(提供按钮)样子,现在的样子不规整</p><p>应制作一个那个在别的网站上显示预览图的功能(做了)</p><p>更新了首页置顶帖子显示的方式,并且增加了相册描述功能</p><p>新的统计信息页面:</p>
<div class='imd'><a href='?show_image=20230414172307.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230414172307.jpg" alt="Images" data-imgsrc='20230414172307.jpg'></a></div><p>幻灯菜单有问题</p>
<p>并且需要跳过引用文章</p><p>制作了个简易幻灯片工具, 使用slides关键字切换成幻灯片。</p>
<p><a href="?post=20231008012624" onclick='ShowWaitingBar()'>就像这样</a></p><p>现在的导航和视觉逻辑不行,需要改为整体页面用表格来制作,所有生成的内容捕获并且填充到指定格子去。</p><p>引用的可以写成灰色</p><p>左侧用帖子编号作为超链接(这样就整齐并且按顺序了),+n作为话题指示,图片可能会用单行高的方块缩略图</p><p>考虑是否要重新设计lamdwiki的样式,做成一个尺寸的文字,类似打字机的样式,使得样式表更加简单,排列更整齐</p><p>优化了表格样式,同时做了不同语言页面入口,使用 en.php 可以访问英语网站,这样搜索引擎就能优化。</p>2021/09/28 17:50:18 - 2024/01/22 11:44:57https://www.wellobserve.com/?post=20240121234220apache ssl 选不中 可能是因为 /etc/apache2/ports.conf 没加 NameVirtualHost *:443 明天检查下是不是2024-01-21T23:42:20+08:002024-01-22T09:45:29+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>apache ssl 选不中 可能是因为 /etc/apache2/ports.conf 没加 NameVirtualHost *:443 明天检查下是不是</p><p>不是 是莫名其妙多了个 site conf</p>2024/01/21 23:42:20 - 2024/01/22 09:45:29https://www.wellobserve.com/?post=20240121215223疑 v0.2a 版的好得涂打包有问题吗。。。2024-01-21T21:52:23+08:002024-01-21T21:52:23+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>疑 v0.2a 版的好得涂打包有问题吗。。。</p>2024/01/21 21:52:23 - 2024/01/21 21:52:23https://www.wellobserve.com/?post=20230102172212好得涂 版本日志
2023-01-02T17:22:12+08:002024-01-19T12:56:30+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Our Paint release notes</h1>
<h2>v0.1</h2>
<p>Files last updated on 2023/01/03 17:40</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1_with_glew.tar.gz">Download AppImage (Packaged with GLEW, <strong>recommended</strong>)</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1.tar.gz">Download AppImage</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_src_v0.1.tar.gz">Download source code</a> | <a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1" target='_blank'>Git branch<sup>↗</sup></a></li>
</ul>
<div class='imd'><a href='?show_image=20221231230345.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221231230345.jpg" alt="Images keep_inline" data-imgsrc='20221231230345.jpg'></a></div>
<p>Cover artist: Wu Yiming.</p>
<p>The first released version, with basic features like:</p>
<ul>
<li>Borderless canvas</li>
<li>Layer and basic mixing</li>
<li>Basic brushes</li>
<li>Interface language switching</li>
<li>Color management</li>
</ul><p>You can now acquire the source code for Our Paint in my <a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint" target='_blank'>code repository<sup>↗</sup></a> (Recommended).</p><h2>v0.1a</h2>
<p> File last updated on 2023/1/27</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1a_Win64.zip"> Download Windows Zip</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1a_Linux_x64.tar.gz"> Download Linux AppImage</a></li>
<li><a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1a" target='_blank'> Git Branch<sup>↗</sup></a></li>
</ul>
<h3> Notes</h3>
<p>This version included experimental support for Windows operating system. If you encountered problems, please report them <a href="https://www.wellobserve.com/repositories/chengdulittlea/OurPaint/issues" target='_blank'>here<sup>↗</sup></a>. This version included the following changes since the last version:</p>
<ul>
<li>4 new default brushes: Pen, Technical Pen, Pencil, Simple Eraser.</li>
<li>Different lock radius for brushes and erasers.</li>
<li>Erroneous pressure event tolerances.</li>
<li>Fix smudging flickering</li>
<li>Fix missing transparent layer when saving.</li>
<li>Fix crashing when compositing layer tiles.</li>
<li>Allow specifying OpenGL version for debugging.</li>
<li>Some stability improvements for LaGUI.</li>
</ul><h2>v0.1b</h2>
<p> File last updated on 2023/2/14</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1b_Win64.zip"> Download Windows Zip</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1b_Linux_x64.tar.gz"> Download Linux AppImage</a></li>
<li><a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1b" target='_blank'> Git Branch<sup>↗</sup></a></li>
</ul>
<h3> Notes</h3>
<p>This version included the following changes since the last version:</p>
<ul>
<li>Supported Wacom stylus input devices through WinTab (Pressure and Tilt), with an option to choose whether to use WinTab or Windows Ink driver.</li>
<li>Added brush dab iteration feature, allows triggering multiple brush dabs in one go, with the ability to discard any specific brush dab.<ul>
<li>New halftone brush, as a demonstration to the brush dab iteration feature.</li>
</ul>
</li>
<li>Fixed transparency mixing error on export.</li>
<li>Stability improvements on Intel integrated graphics (For 7/8th gen Intel integrated graphics, the GPU power governor still has issues under Linux which might randomly cause complete freeze up).</li>
<li>Other fixes for the issues in the repository.</li>
</ul><h2>v0.1c</h2>
<p> File last updated on 2023/08/08</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1c_Win64.zip"> Download Windows Zip</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.1c_Linux_x64.tar.gz"> Download Linux AppImage</a></li>
<li><a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.1c" target='_blank'> Git Branch<sup>↗</sup></a></li>
</ul>
<h3> Notes</h3>
<p>This version included the following changes since the last version:</p>
<ul>
<li>New paper dimension presets, support ISO/DIN A/B and Chinese/east asian K sizes.</li>
<li>New interface sunlight composition adjustment option and visual reference stripes.</li>
<li>Improved OpenGL context management in LaGUI. It should be more stable than previous versions.</li>
<li>Optimized the font cache in LaGUI to prevent erroneous text display.</li>
<li>Other optimizations in LaGUI.</li>
</ul><h2>v0.2</h2>
<p> File last updated on 2023/09/12</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.2_Win64.zip"> Download Windows Zip</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.2_Linux_x64.tar.gz"> Download Linux AppImage</a></li>
<li><a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.2" target='_blank'> Git Branch<sup>↗</sup></a></li>
</ul>
<div class='imd'><a href='?show_image=20230912143859.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230912143859.jpg" alt="图片 keep_inline" data-imgsrc='20230912143859.jpg'></a></div>
<h3>Compared to the previous version...</h3>
<ul>
<li>Added canvas texture influence feature, with presets of Canvas and Paper textures, paint scratching effect can be controlled with pen pressure.<ul>
<li>Files saved with 0.1x version is also compatible, Our Paint will revert canvas influence to zero when read old files.</li>
</ul>
</li>
<li>Added paint gunkyness control to work with canvas texture.</li>
<li>New brush selection panel, now with categorization.</li>
<li>Improved outdoor display sun light compensation feature, can be accessed with the sun icon on the top of the window.</li>
<li>New brushes:<ul>
<li>Gouache smudge brush</li>
<li>Oil, Thick Oil, Oil Smudge brushes</li>
<li>Pastel</li>
<li>Optimized Pencil and Thick Pencil brushes</li>
<li>Marker</li>
<li>Paper-like smudge brush</li>
</ul>
</li>
<li>Improved existing brushes, most brushes now have canvas texture influence, it will revert to original look once the canvas factor is set to zero.</li>
<li>Optimized LaGUI for stability.</li>
</ul><h2>v0.2a</h2>
<p> File last updated on 2024/01/19</p>
<ul>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.2a_Linux_x64.tar.gz"> Download Linux AppImage</a></li>
<li><a href="Files/OurPaint/Releases/OurPaint_v0.2a_Winx64.tar.gz"> Download Windows Zip</a></li>
<li><a href="http://www.wellobserve.com/repositories/chengdulittlea/OurPaint/src/v0.2a" target='_blank'> Git Branch<sup>↗</sup></a></li>
</ul>
<h3>Compared to the previous version...</h3>
<ul>
<li>New pen twist feature, it can be used to control dab angle.</li>
<li>New palette feature.</li>
<li>Fixed erroneous flashes of brightness reference stripes.</li>
<li>Fixed low event rate issue on Windows which would cause strokes to zig-zag.</li>
<li>Fixed unresponsive <code>[ ]</code> shortcut on Windows.</li>
</ul>2023/01/02 17:22:12 - 2024/01/19 12:56:30https://www.wellobserve.com/?post=20240118144906emm 变速器拉线比不一致2024-01-18T14:49:06+08:002024-01-18T20:38:11+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emm 变速器拉线比不一致</p><p>又把旧的修好了。。。(基本上)</p>2024/01/18 14:49:06 - 2024/01/18 20:38:11https://www.wellobserve.com/?post=20240117210905肚子痛吃多了菜2024-01-17T21:09:05+08:002024-01-17T21:09:05+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>肚子痛吃多了菜</p>2024/01/17 21:09:05 - 2024/01/17 21:09:05https://www.wellobserve.com/?post=20211021001236Line Art
2021-10-21T00:12:36+08:002024-01-11T21:48:59+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Line Art</h1>
<p>Line Art is a feature line drawing tool I created inside Blender. It calculates and generates feature lines on geometry level.</p>
<p>This topic contains some work logs for Line Art. Visit <a href="https://developer.blender.org/tag/line_art/" target='_blank'>Blender Developers<sup>↗</sup></a> for more information.</p>
<div class='imd'><a href='?show_image=20211024170602.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20211024170602.jpg" alt="Images" data-imgsrc='20211024170602.jpg' data-product='https://www.redbubble.com/i/art-print/Boeing-727-Cutaway-Drawing-Blueprint-by-ChengduLittleA/77549197.1G4ZT'></a></div><p>好吧我们先看<a href="?post=20211028173327" onclick='ShowWaitingBar()'>Nurbs的什么鬼</a></p><p>到底可不可以流水线</p><p>报告说交线过滤不管用(针对拖拉机测试文件,单个修改器勾选交线之后只出现交线,<del>不清楚具体原因</del>逻辑有小问题,已经修了)</p><p>线条超出视线盒子</p><p>12线程的机器报CPU占用100%</p><p>折边强度记录</p>
<p>(想了想好像也可以做轮廓的,以及外轮廓)</p><p>edgehash本身可以能优化一些。</p><p>远期改:内存池分阶段。</p><ul>
<li>做剩余小功能的补丁然后拿去审核。</li>
<li>改评论里面的。</li>
</ul><p>远期改:交叉线的重复点先退出问题。</p><p>初步的修改丢在<a href="https://developer.blender.org/D13143" target='_blank'>这里<sup>↗</sup></a>了</p><p>也不对,其实是三角形配对标记没有分线程用。</p><p><del>事实是多线交叉时只锁了分块,这样操作下三角形对有重复计算的可能。可以对每个三角形分配一个锁引用然后修改测试标记。</del></p><p>猴子文件那个交叉线<del>问题跟线程有关,导致多遮挡。</del>误判,实际是调试问题,但总之计算还是有问题的。</p><p>大概是这么修的:</p>
<ul>
<li>线线关系查询时多返回一个对齐指标,方便之后判断(但似乎实际产生拦截的情况出现得不多)。</li>
<li>点线关系在ab垂直于bc时并正对X/Y方向时错误地返回了真,已修复(应检查是否有遗漏情况)。</li>
<li>一点在三角边缘邻域,另一点在外部的情况根据前述指标处理更多情况。</li>
</ul>
<p>目前正确率非常高,错误的线段仅限于极短且与单个三角边缘平行度极高的场合,实际图像中已经小于一个像素,因此暂无需多虑。</p>
<p>还有问题:</p>
<ul>
<li>重叠导致的交叉线似乎非常容易透过遮挡。</li>
<li>猴子盒子文件中的一个方块角有缺失。</li>
</ul>
<p>其余遮挡错误情况不显著。</p>
<ul>
<li>近裁剪面切割仍然不正确,尚待查找原因,原则上不应使用近裁剪面作为看结构的工具。</li>
</ul><p>修了一些,似乎好得多了</p><p>报交线选择在有子集合的情况下不正确。(检查标记的逻辑不对)</p><p>报主干密集面崩溃,查是加速块线条数量超界,没有考虑保护因为3万条线集中在一点一般不可能,应加保护。(已经加了)</p>
<p>另外由于主干的一些合并导致线条被添加了两次,现已修复。</p><p>2.93的照相机平移问题改好。</p><p>通过照相机投影到背景可以生成蒙特法平滑填充所需的内外侧颜色信息。未投影的为背景颜色,应该可以用透明通道,关键算法已经在阴影分支里现成了所以这个坐起来很容易,只需要搞清楚怎么<a href="?post=20211209223036" onclick='ShowWaitingBar()'>蒙特那个着色</a>即可。</p><p>报告有线条闪烁问题(裁剪所用相机方向问题←这里修的)</p><p>虚线修改器不能时移</p><p>阴影分界线</p><p>远处模型崩溃(分块一直细分的问题,一些视口坐标似乎不正确)</p>
<p>裁剪所用相机方向问题。</p><p>报告交叉线筛选时有遗漏(不选择时正常)(之后似乎又不能复现)</p><p>GPU细分时lanpr只载入了基础模型。(<a href="https://developer.blender.org/T95470" target='_blank'>T95470<sup>↗</sup></a>)</p>
<p>同样的问题也出现在<a href="https://developer.blender.org/T94479" target='_blank'>T94479<sup>↗</sup></a>。</p><p>转移顶点色的选项</p><p>噪声串联应该有个保留或者不保留细节的选项。</p><p>至于串联的问题:由于发生在同一个遮挡级别因此会跳动(例如可以忽略遮挡层级之间非常短的不同层/更深层小段)。</p><p>gp根据曲率和速度的权重。<a href="https://textbin.xyz/?f57a59f7c8c8af82#6GqvBLeqrUuqEQCNtZ2wq5FFXZkeEsn1c9PNcHg9reNd" target='_blank'>kcanon提供了他自己写的脚本<sup>↗</sup></a>。</p><p>要有针对相交线的权重传递 <a href="https://developer.blender.org/T94033" target='_blank'>T94033<sup>↗</sup></a> 这需要在求交的时候记录到六点的距离作为权重?</p><p>修改器要带有压扁功能</p><p>接下来的首要研究内容是<a href="?post=20220115170104" onclick='ShowWaitingBar()'>完全通过BVH</a>,利用照相机出发的假三角形做遮挡查询。</p>
<p>利用embree的<code>rtcCollide()</code>可以求自相交(例子中即是这样使用的)。注意回调<a href="https://community.intel.com/t5/Intel-Embree-Ray-Tracing-Kernels/comparison-two-methods-for-collision-detection/td-p/1251989" target='_blank'>应当多线程友好<sup>↗</sup></a></p><p>无限制拆分Tile的这个得修好了不然就很麻烦。(先看embree的实现到底快不快)</p><p>修复了折边逻辑</p><p>正交视角又又又又又坏了</p>
<p>为什么</p>
<p>是因为每次合并就这样了吗(昨天修了,平移不一致问题)</p><p>背面剔除选项没有删掉线。</p><p>GP带循环的情况的采样和点划线没有考虑到。</p><p><a href="https://developer.blender.org/T94888" target='_blank'>三角化不一致问题<sup>↗</sup></a> 解决了</p><p>可能的优化:接受最平的三角形对作为加载进去的几何,这样可以兼容例如阵列<a href="https://developer.blender.org/T96846" target='_blank'>合并之后内部剩余的面<sup>↗</sup></a>。(其实不对,考虑一个九十度相交场景)</p><p><code>lineart-shadow</code>的交叉线不串联就出不来了emmmmm(过滤开关未写进逻辑,修了)</p><p>剩下的主要工作:</p>
<ul>
<li><a href="?post=20220115170104" onclick='ShowWaitingBar()'>embree实验</a>。</li>
<li>多线程加载(和Sebastian)。</li>
<li>平滑轮廓线修改器。</li>
<li>投影支持更新到最新。<ul>
<li>以及通过投影的轮廓代码取得正向轮廓。</li>
<li>考虑如何记录阴影和照明片段以实现通过这个筛选被照或者在阴影中的内容。</li>
</ul>
</li>
<li>照相机多段变形。</li>
</ul>
<p>(需要有上下文地将剩余工作整理成完整的说明放在<a href="https://developer.blender.org/T87739" target='_blank'>DBO话题<sup>↗</sup></a>上。)</p><p>轮廓基本上可以了,<del>但是单边多切以及分段组编号尚未处理好。</del> 目前<a href="?post=20220428131534" onclick='ShowWaitingBar()'>样子不错</a>,只有点小逻辑问题。</p>
<div class='imd'><a href='?show_image=20220428112756.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220428112756.jpg" alt="图片" data-imgsrc='20220428112756.jpg'></a></div><p>可以cas记录元素而不需复制</p><p><del>塞满是不行的……</del></p>
<p>似乎从头锁到尾了所以这样反而慢,试下只锁最深层看有没有改善。</p>
<div class='imd'><a href='?show_image=20220422150247.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220422150247.jpg" alt="图片" data-imgsrc='20220422150247.jpg'></a></div><p>根据Sebastian的提议现尝试使用CAS(比较和更换指令,<code>CMPXCHG</code>)来避免使用锁。</p>
<p>目前:倒好不坏的,不算慢也不算快,并且内存怎么删都有问题……</p>
<div class='imd'><a href='?show_image=20220415215239.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220415215239.jpg" alt="图片" data-imgsrc='20220415215239.jpg'></a></div><p>还要检查阴影区域投影所用特征线的投射遮挡逻辑,是否有重在面上的那些。</p><p>理论上由于在计算阴影的情况下基本上都需要投影两次,那么是否可以将全局位置什么的做到一个数据结构里?这样省空间。。。。?</p><p>带光轮廓反投的正确解算已经可以了,另有<a href="?post=20220412162224" onclick='ShowWaitingBar()'>加州阳光</a>。</p>
<div class='imd'><a href='?show_image=20220412154613.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220412154613.jpg" alt="图片" data-imgsrc='20220412154613.jpg'></a></div><p>哈哈哈封闭阴影形状实现了</p>
<p>小问题是光轮廓没有再投影所以正方形那里还不完全对,但是已经不错了。</p>
<p><del>(直接再投似乎也不起作用,不知道为什么)</del> 修了,边对应以及来自三角形边的问题。</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20220411223834.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220411223834.jpg" alt="图片" data-imgsrc='20220411223834.jpg' data-parent='20220412154613'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20220411223835.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220411223835.jpg" alt="图片" data-imgsrc='20220411223835.jpg' data-parent='20220412154613'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20220411224904.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220411224904.jpg" alt="图片" data-imgsrc='20220411224904.jpg' data-parent='20220412154613'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>emmm</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20220411115206.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220411115206.jpg" alt="图片" data-imgsrc='20220411115206.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20220411115420.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220411115420.jpg" alt="图片" data-imgsrc='20220411115420.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>理论上可以支持聚光灯,添加加一个虚拟圆孔遮罩即可。</p><p>新物体加载没得删除重叠点(决定不再包括这个功能)。</p><p>既是光投影轮廓又是摄像机轮廓的线似乎应当不作为光投影轮廓处理(其实它实际应该作为第三次投影查询时的输入)。</p>
<p>第三次投影的原理就是显示暗在明上和隐藏明在明上的轮廓和光投影轮廓线。</p><p>阴影大概就是这个样子。</p>
<div class='imd'><a href='?show_image=' target='_blank' onclick='event.preventDefault();'><img src="20220408232011.gif" alt="图片" data-imgsrc='20220408232011.gif'></a></div><p>目前是这个效果,但是交线的标识数格式不一样,暂未支持,需要在交线计算完成之后再完成一次匹配才行,这可能明显降低性能,主要由于交线未按物体区分。</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20220408215019.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220408215019.jpg" alt="图片" data-imgsrc='20220408215019.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20220408215012.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220408215012.jpg" alt="图片" data-imgsrc='20220408215012.jpg' data-parent='20220408215019'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>做两阶段读取索引匹配以筛选被照亮的线。(逻辑正确了)</p><p>应删除<code>e->v1_obindex</code>,不知道为什么用的是这个,因为最后看重叠点时用的是顶点索引。(似乎可以了,以后需要多深度拼接的时候不对再来改)</p><p>阴影分支:应当分开投影线和明暗交界线。(可以了,只是还要删掉多于的明暗线区分那里)</p><p>改好了新物体加载的面标记筛选</p><p>多线程加载检查是否能获得自动平滑信息。(其实是对的,只是稍微改下逻辑等等……)</p><p>应检查经典方法中是否需要锁那么长的时间……</p>
<p>问题:</p>
<ul>
<li><del>遮挡查询目前在列表中遍历,理想情况下应该为在Array中遍历以提升速度。</del> 的确快了。</li>
</ul><p>可能需要再看将<code>duplilist</code>做到<code>add_relation</code>里头。(做了,访问不到粒子和子实例)</p><p>视口三角化用于几何计算的效果还是不理想。</p><p>Hans和Sebastian提议的<a href="https://stackoverflow.com/questions/41946007/efficient-and-well-explained-implementation-of-a-quadtree-for-2d-collision-det/48355534#48355534" target='_blank'>二维碰撞查找<sup>↗</sup></a></p><p>windows的<code>atomic_load</code>大约只有<a href="https://github.com/FFmpeg/FFmpeg/blob/master/compat/atomics/win32/stdatomic.h" target='_blank'>这么搞<sup>↗</sup></a>。</p><p>Sergey说在计算时获得已计算内容用<a href="https://developer.blender.org/rBa99dcab148ed209409f3b2479ada12d869ae84b6" target='_blank'>这样的写法<sup>↗</sup></a>才行,研究研究……(物体和集合实例已经可以了但是粒子和面实例不行)</p><h2>LineArt edge type configuration cheat sheet</h2>
<p>{read_more}</p>
<style>.la_red{color:#E2545F;}.la_blue{color:#6984E0;}</style>
<table>
<thead>
<tr>
<th>Appearance</th>
<th>Feature Lines</th>
<th>Region</th>
<th>Enclosed Shapes</th>
</tr>
</thead>
<tbody>
<tr>
<td><div class='imd'><a href='?show_image=20220624132014.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132014.jpg" alt="keep_inline" data-imgsrc='20220624132014.jpg'></a></div></td>
<td>Contour + <span class='la_red'>Crease</span> + <span class='la_blue'>Intersection</span></td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132015.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132015.jpg" alt="keep_inline" data-imgsrc='20220624132015.jpg'></a></div></td>
<td>Contour + Crease + Intersection</td>
<td>Lit / <span class='la_blue'>Shaded</span></td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132016.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132016.jpg" alt="keep_inline" data-imgsrc='20220624132016.jpg'></a></div></td>
<td>Contour + <span class='la_blue'>Light Contour</span> + <span class='la_red'>Cast Shadow</span></td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132017.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132017.jpg" alt="keep_inline" data-imgsrc='20220624132017.jpg'></a></div></td>
<td>Contour + Light Contour + Cast Shadow</td>
<td>Lit</td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132018.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132018.jpg" alt="keep_inline" data-imgsrc='20220624132018.jpg'></a></div></td>
<td>Contour + Light Contour + Cast Shadow</td>
<td>Lit</td>
<td>Enclosed Shapes</td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132020.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132020.jpg" alt="keep_inline" data-imgsrc='20220624132020.jpg'></a></div></td>
<td>Contour + Light Contour + Cast Shadow + <span class='la_blue'>Edge Marks</la_blue></td>
<td>Lit</td>
<td>Enclosed Shapes</td>
</tr>
<tr>
<td><div class='imd'><a href='?show_image=20220624132019.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220624132019.jpg" alt="keep_inline" data-imgsrc='20220624132019.jpg'></a></div></td>
<td><span class='la_blue'>Silhouette Group 1</span> + <span class='la_red'>Group 2</span> + Anti-Silhouette</td>
</tr>
</tbody>
</table>
<p>轮廓和光照轮廓的明暗要根据摄像机可视面的对光与否判断,目前的方法从背后看形状封闭得不正确。</p><p>这个可以,但是似乎曲线的封闭形状选项不起作用,需要检查。</p>
<div class='imd'><a href='?show_image=20220806133431.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220806133431.jpg" alt="图片" data-imgsrc='20220806133431.jpg'></a></div><p>新!通过GPU有偏地算线画也已经可行。与之前的dpix情况相比,由于lineart目前计算好了前后裁剪,因此只需要比深度即可求显隐。</p>
<p>由于lineart也已经计算阴影,阴影线也可以同时丢进去。阴影线计算本身可能也可以丢进去,取决于精度(因为如果跟踪精度不够的话有的地方会飞)</p><p>基于GN的解决方案需要通过attribute来过滤而不是通过内部记录和输出源信息。</p>
<p><a href="https://docs.google.com/document/d/15r8BMEc1rfjfRA5MKP-RUHSz3KuMCA4PbTU-oyTzsHo/edit#" target='_blank'>谷歌文档<sup>↗</sup></a></p><p>Line Art 正在迁移到 Grease Pencil 3.0</p>
<div class='imd'><a href='?show_image=20240111214821.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20240111214821.jpg" alt="图片" data-imgsrc='20240111214821.jpg'></a></div>2021/10/21 00:12:36 - 2024/01/11 21:48:59https://www.wellobserve.com/?post=20231229200329GPv3 and Curves API Familiarization Notes
2023-12-29T20:03:29+08:002024-01-08T23:40:02+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>GPv3 and Curves API Familiarization Notes</h1>
<p>{read_more}</p><p>So you want to do some operations to the GP3/Curves data, here's a typical function that a
GP3 operator would call:</p>
<pre><code>static int grease_pencil_do_whatever(bContext *C, wmOperator * /*op*/)
{
const Scene *scene = CTX_data_scene(C);
Object *object = CTX_data_active_object(C);
GreasePencil &grease_pencil = *static_cast<GreasePencil *>(object->data);
</code></pre>
<p>How to get "drawings" for us to edit under GPv3 and iterate over each "drawing":</p>
<pre><code> const Array<MutableDrawingInfo> drawings = retrieve_editable_drawings(*scene, grease_pencil);
threading::parallel_for_each(drawings, [&](const MutableDrawingInfo &info) {
IndexMaskMemory memory;
const IndexMask strokes = ed::greasepencil::retrieve_editable_and_selected_strokes(
*object, info.drawing, memory);
if (strokes.is_empty()) {
return;
}</code></pre>
<p>Get a curves container to work on inside this drawing... By using <code>&curves</code> it allows us to later just directly assign a new one. So this way we could create new curves easier.</p>
<p>Essentially we don't "edit" the curve, but creates a new one, and there are utility functions in <code>Curves</code> to allow easy transferring of old data.</p>
<pre><code> bke::CurvesGeometry &curves = info.drawing.strokes_for_write();
</code></pre>
<p>And choose to work with "Select Domain"... (Like whether you select strokes or points)</p>
<pre><code> const bke::AttrDomain selection_domain = ED_grease_pencil_selection_domain_get(
scene->toolsettings);
if (selection_domain == bke::AttrDomain::Curve) {
curves.remove_curves(elements, {});
}
else if (selection_domain == bke::AttrDomain::Point) {
curves = remove_points_and_split(curves, elements);
}
// Curves etc...
Array<bool> points_to_delete(curves.points_num()); // 1d array
const int total_points = points_to_delete.as_span().count(false);
</code></pre>
<p>This is how we iterate over curves...</p>
<pre><code> for (const int curve_i : curves.curves_range()) {
const IndexRange points = points_by_curve[curve_i];
const Span<bool> curve_points_to_delete = points_to_delete.as_span().slice(points);
const bool curve_cyclic = src_cyclic[curve_i];
//...
}
}); // End parallel iteration over stroke.
</code></pre>
<p>Create a new curves "container", this is where we actually create new stuff and then we put in data... If we have counts for individual curves, counts can be accumulated into new offsets with convenience functions.</p>
<pre><code> bke::CurvesGeometry dst_curves(total_points, total_curves);
MutableSpan<int> new_curve_offsets = dst_curves.offsets_for_write();
array_utils::copy(dst_curve_counts.as_span(), new_curve_offsets.drop_back(1));
offset_indices::accumulate_counts_to_offsets(new_curve_offsets);
bke::MutableAttributeAccessor dst_attributes = dst_curves.attributes_for_write();
const bke::AttributeAccessor src_attributes = curves.attributes();
</code></pre>
<p>Copy from dst-src matching pairs if data is modified from previous curves.</p>
<pre><code> /* Transfer curve attributes. */
gather_attributes(
src_attributes, bke::AttrDomain::Curve, {}, {"cyclic"}, dst_to_src_curve, dst_attributes);
array_utils::copy(dst_cyclic.as_span(), dst_curves.cyclic_for_write());
}</code></pre>
<h3>Other points</h3>
<ul>
<li>Individual elements delivered by <code>Span</code> and <code>Array</code> etc can all be accessed with []. So <code>MutableSpan some=other; some[index]=thing;</code> is (should be?) valid.</li>
<li><code>info.drawings.radii</code> is different from <code>radius</code> attribute under <code>Curves</code>. GP3 uses <code>radii</code>.</li>
</ul><h2>Need Clarification</h2>
<ul>
<li><del>How is GP3 modifier gonna be integrated, where to start? Will it be put alongside a generic modifier for easier management and code path?</del><ul>
<li>Answer: Will be included into the main modifier folder, will have special flags indicating modifier being available to GP3.</li>
</ul>
</li>
<li><del>In the case of subdiv, should this become a generic curve function or just for GP3?</del> (there is now, but doesn't support selected portion)<ul>
<li><del>Which parts currently are safe to touch/add/modify?</del> Doesn't seem to be anything there needs to be modified.</li>
</ul>
</li>
<li>Why there's <code>blender::bke::greasepencil::Layer</code> and <code>::GreasePencilFrame</code>?</li>
<li>Should we keep old DNA <em>and</em> RNA in place?</li>
</ul><h2><code>Array</code> to <code>VArray</code> conversion</h2>
<p>Use</p>
<pre><code> Array<int> cuts_array(curves.curve_num,cuts);
VArray<int> vcuts=VArray<int>::ForContainer(std::move(cuts_array));</code></pre>
<p>Or</p>
<pre><code> VArray<int>::ForSpan(cuts_array.as_span())</code></pre><h2>Missing GPencil 3.0 API</h2>
<ul>
<li>BKE_gpencil_frame_active_set</li>
</ul><h2>Some notes</h2>
<p>GP3 Draw while sculpting?</p>2023/12/29 20:03:29 - 2024/01/08 23:40:02https://www.wellobserve.com/?post=20240107104750How to Travel by Cargo Ship Around the World2024-01-07T10:47:50+08:002024-01-07T10:47:50+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>How to Travel by Cargo Ship Around the World</p>
<p><a href="https://www.transitionsabroad.com/listings/travel/articles/travel-by-cargo-ship-around-the-world.shtml" target='_blank'>https://www.transitionsabroad.com/listings/travel/articles/travel-by-cargo-ship-around-the-world.shtml<sup>↗</sup></a></p>
<p><a href="https://www.cargoshipvoyages.com/ViewAllVoyages/" target='_blank'>https://www.cargoshipvoyages.com/ViewAllVoyages/<sup>↗</sup></a></p>
2024/01/07 10:47:50 - 2024/01/07 10:47:50https://www.wellobserve.com/?post=20240106214228Dabbling in the Cryptographic World--A Story2024-01-06T21:42:28+08:002024-01-06T21:42:28+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Dabbling in the Cryptographic World--A Story</p>
<p><a href="https://www.bell-labs.com/usr/dmr/www/crypt.html" target='_blank'>https://www.bell-labs.com/usr/dmr/www/crypt.html<sup>↗</sup></a></p>
2024/01/06 21:42:28 - 2024/01/06 21:42:28https://www.wellobserve.com/?post=20240104125451有一个空闲的 Arduino 和 ESP32 , 是不是可以拿来做一个车灯喇叭速度表。。。2024-01-04T12:54:51+08:002024-01-06T11:22:51+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>有一个空闲的 Arduino 和 ESP32 , 是不是可以拿来做一个车灯喇叭速度表。。。</p><p>可以用那种1.5g的舵机做指针或纸带显示。</p><p>原理上可以在碟刹片上安装一种附加的驱动装置以发电供车灯使用而无需修改车轮结构</p>2024/01/04 12:54:51 - 2024/01/06 11:22:51https://www.wellobserve.com/?post=20240104221143删除 xserver-xorg-video-intel 以停用 intel 核显。2024-01-04T22:11:43+08:002024-01-04T22:11:43+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>删除 xserver-xorg-video-intel 以停用 intel 核显。</p>2024/01/04 22:11:43 - 2024/01/04 22:11:43https://www.wellobserve.com/?post=20231226162404未命名2023-12-26T16:24:04+08:002023-12-26T16:24:39+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<p>在wacom上看还可以 实际饱和度可能高一点更好看。</p>
<div class='imd'><a href='?show_image=20231226155713.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231226155713.jpg" alt="图片" data-imgsrc='20231226155713.jpg'></a></div>2023/12/26 16:24:04 - 2023/12/26 16:24:39https://www.wellobserve.com/?post=20231225114614fcitx5 没有候选框和一些程序 XOpenIM 找不到,应安装 fcitx5-module-xorg libxcb-imdkit1 ,这样就可以了2023-12-25T11:46:14+08:002023-12-25T11:46:14+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p><code>fcitx5</code> 没有候选框和一些程序 <code>XOpenIM</code> 找不到,应安装 <code>fcitx5-module-xorg libxcb-imdkit1</code> ,这样就可以了</p>2023/12/25 11:46:14 - 2023/12/25 11:46:14https://www.wellobserve.com/?post=20231221222604未命名2023-12-21T22:26:04+08:002023-12-21T22:26:04+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<div class='imd'><a href='?show_image=20231221222303.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231221222303.jpg" alt="图片" data-imgsrc='20231221222303.jpg'></a></div>2023/12/21 22:26:04 - 2023/12/21 22:26:04https://www.wellobserve.com/?post=20231220112326原来用 certbot 就可以自动给apache上的网站配好ssl。。。2023-12-20T11:23:26+08:002023-12-20T11:23:26+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>原来用 certbot 就可以自动给apache上的网站配好ssl。。。</p>2023/12/20 11:23:26 - 2023/12/20 11:23:26https://www.wellobserve.com/?post=20231212002348原则上讲 不基于方块的地图规划游戏应该很少 特别是应用在例如模拟器中2023-12-12T00:23:48+08:002023-12-12T00:25:10+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>原则上讲 不基于方块的地图规划游戏应该很少 特别是应用在例如模拟器中</p><p>用经纬点定位,动态推挤,几何相交方式制作和共享地图应该比基于方块和高度图的方法更加灵活</p>2023/12/12 00:23:48 - 2023/12/12 00:25:10https://www.wellobserve.com/?post=20231122000353不仅可以做直升机桨头 还可以做自制35mm电影机2023-11-22T00:03:53+08:002023-11-22T00:03:53+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>不仅可以做直升机桨头 还可以做自制35mm电影机</p>2023/11/22 00:03:53 - 2023/11/22 00:03:53https://www.wellobserve.com/?post=20231031181356又到总部来了2023-10-31T18:13:56+08:002023-10-31T18:13:56+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>又到总部来了</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180640.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180640.jpg" alt="Images" data-imgsrc='20231031180640.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180637.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180637.jpg" alt="Images" data-imgsrc='20231031180637.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180635.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180635.jpg" alt="Images" data-imgsrc='20231031180635.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180632.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180632.jpg" alt="Images" data-imgsrc='20231031180632.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180628.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180628.jpg" alt="Images" data-imgsrc='20231031180628.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180641.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180641.jpg" alt="Images" data-imgsrc='20231031180641.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231031180642.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231031180642.jpg" alt="Images" data-imgsrc='20231031180642.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/10/31 18:13:56 - 2023/10/31 18:13:56https://www.wellobserve.com/?post=20231031165237emm今天要不要去航空博物馆2023-10-31T16:52:37+08:002023-10-31T16:52:37+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emm今天要不要去航空博物馆</p>2023/10/31 16:52:37 - 2023/10/31 16:52:37https://www.wellobserve.com/?post=20231027154632忘记传照片了不过emmm2023-10-27T15:46:32+08:002023-10-27T15:46:32+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>忘记传照片了不过emmm</p>2023/10/27 15:46:32 - 2023/10/27 15:46:32https://www.wellobserve.com/?post=20231021222003需不需要一个成都纪念品 emmmm2023-10-21T22:20:03+08:002023-10-21T22:20:03+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>需不需要一个成都纪念品 emmmm</p>2023/10/21 22:20:03 - 2023/10/21 22:20:03https://www.wellobserve.com/?post=20231017214253做个 GN 的铝型材模板2023-10-17T21:42:53+08:002023-10-17T21:42:53+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>做个 GN 的铝型材模板</p>2023/10/17 21:42:53 - 2023/10/17 21:42:53https://www.wellobserve.com/?post=20230905185331去荷兰应该去哪里呢2023-09-05T18:53:31+08:002023-10-14T22:02:30+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>去荷兰应该去哪里呢</p><p>额</p><p>SILODAM</p><p><del>Ypenburg, The Hague</del> 重了</p><p>Pampus Harbour (Almere)</p><p>Open Air School</p><p>Schröder House (Utrecht) <a href="https://www.rietveldschroderhuis.nl/nl" target='_blank'>https://www.rietveldschroderhuis.nl/nl<sup>↗</sup></a></p><p>The Mondriaan House (Amersfoort) <a href="https://www.mondriaanhuis.nl/en/" target='_blank'>https://www.mondriaanhuis.nl/en/<sup>↗</sup></a></p><p>Museum Het Rembrandthuis <a href="https://www.rembrandthuis.nl/nl/" target='_blank'>https://www.rembrandthuis.nl/nl/<sup>↗</sup></a></p><p>NEST (Hague) <a href="https://www.nestruimte.nl" target='_blank'>https://www.nestruimte.nl<sup>↗</sup></a></p><p>Van Gogh Museum</p><p>Rijksmuseum Amsterdam <a href="https://www.rijksmuseum.nl/nl" target='_blank'>https://www.rijksmuseum.nl/nl<sup>↗</sup></a></p><p>Luchtvaartmuseum Aviodrome <a href="https://www.aviodrome.nl/" target='_blank'>https://www.aviodrome.nl/<sup>↗</sup></a></p><p>Bijlmermeer / De Boom Die Alles Zag <a href="https://en.m.wikipedia.org/wiki/De_Boom_Die_Alles_Zag" target='_blank'>https://en.m.wikipedia.org/wiki/De_Boom_Die_Alles_Zag<sup>↗</sup></a></p><p>Waterlooplein Market</p><p>Julius Taminiau Architects B.V. IJsbaanpad 66e</p><p>Figee crane 2868 Surinamekade 34, 1019 BH</p><p>Kubuswoningen (Rotterdam) <a href="https://www.kubuswoning.nl/en/visit.html" target='_blank'>https://www.kubuswoning.nl/en/visit.html<sup>↗</sup></a></p><p>找一些二手市场 Kringloopwinkel</p>
<p>Ij-Hallen <a href="https://ijhallen.nl/en/index.php" target='_blank'>https://ijhallen.nl/en/index.php<sup>↗</sup></a></p><p>Museum Speelklok (Utrecht) <a href="https://www.museumspeelklok.nl/lang/ch/" target='_blank'>https://www.museumspeelklok.nl/lang/ch/<sup>↗</sup></a></p><p>Hagen Island (Hague) <a href="https://www.mvrdv.com/projects/155/hagen-island" target='_blank'>https://www.mvrdv.com/projects/155/hagen-island<sup>↗</sup></a></p><p>WATERLOOPLEIN MARKET</p>2023/09/05 18:53:31 - 2023/10/14 22:02:30https://www.wellobserve.com/?post=20231008012624laMDWiki Simple Presentation 2023-10-08T01:26:24+08:002023-10-08T12:47:10+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>laMDWiki Simple Presentation </h1>
<p> Demonstration presentation</p>
<p><span class="gray smaller"> Click the page or use the buttons on the bottom right to navigate.</span></p>
<h2> This is a new page</h2>
<p>Write stuff just like how you would in any markdown files</p>
<ul>
<li>and this is a list</li>
<li>it looks alright</li>
</ul>
<div class='imd imd_float'><a href='?show_image=20230503211123.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/20230503211123.jpg" alt="图片 float" data-imgsrc='20230503211123.jpg' class='original_img'></a></div>
<h2> It also supports images</h2>
<p> Just like this...</p><p>Press <code>ESC</code> or use the <code>X</code> button on the bottom right to exit.</p>
<p>Download <a href="?post=20211107011347" onclick='ShowWaitingBar()'>laMDWiki</a> now!</p>2023/10/08 01:26:24 - 2023/10/08 12:47:10https://www.wellobserve.com/?post=20231004122302前天2023-10-04T12:23:02+08:002023-10-04T12:23:02+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>前天</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20231004122227.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231004122227.jpg" alt="图片" data-imgsrc='20231004122227.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231004122231.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231004122231.jpg" alt="图片" data-imgsrc='20231004122231.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20231004122226.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20231004122226.jpg" alt="图片" data-imgsrc='20231004122226.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/10/04 12:23:02 - 2023/10/04 12:23:02https://www.wellobserve.com/?post=20231004093738银行又在搞啥子2023-10-04T09:37:38+08:002023-10-04T09:37:38+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>银行又在搞啥子</p>2023/10/04 09:37:38 - 2023/10/04 09:37:38https://www.wellobserve.com/?post=20230928161337文字处理程序应当只存在一个排列属性,就是书写方向的起始点,这个起点必须连续可调,同时两侧止点、行间距等也必须这样视觉上连续可调,用手拖动的方式直接调。2023-09-28T16:13:37+08:002023-09-28T16:13:37+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>文字处理程序应当只存在一个排列属性,就是书写方向的起始点,这个起点必须连续可调,同时两侧止点、行间距等也必须这样视觉上连续可调,用手拖动的方式直接调。</p>2023/09/28 16:13:37 - 2023/09/28 16:13:37https://www.wellobserve.com/?post=20230912143941747
2023-09-12T14:39:41+08:002023-09-19T16:05:47+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h2>747</h2>
<p>(使用好得涂 v0.2)</p>
<div class='imd'><a href='?show_image=20230912143859.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/20230912143859.jpg" alt="keep_inline original" data-imgsrc='20230912143859.jpg' class='original_img'></a></div><p>怪事 为啥这张有点红</p>2023/09/12 14:39:41 - 2023/09/19 16:05:47https://www.wellobserve.com/?post=20220606132019偶尔发点中间图
2022-06-06T13:20:19+08:002023-09-10T22:27:51+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>偶尔发点中间图</h1>
<p>...</p><p>NSZ</p>
<div class='imd'><a href='?show_image=20220606131934.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20220606131934.jpg" alt="图片" data-imgsrc='20220606131934.jpg'></a></div><p>又不会画了</p>
<div class='imd'><a href='?show_image=20230113141225.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230113141225.jpg" alt="图片" data-imgsrc='20230113141225.jpg'></a></div><p>测试 好得涂 0.2 的笔</p>
<div class='imd'><a href='?show_image=20230910222257.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230910222257.jpg" alt="图片" data-imgsrc='20230910222257.jpg' data-parent='20230912143859'></a></div>2022/06/06 13:20:19 - 2023/09/10 22:27:51https://www.wellobserve.com/?post=20230909223326emmm 没有试验新好得涂2023-09-09T22:33:26+08:002023-09-09T22:33:41+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emmm 没有试验新好得涂</p><p>应该把版本改成0.2了</p>2023/09/09 22:33:26 - 2023/09/09 22:33:41https://www.wellobserve.com/?post=20230908183558试了下CHDK上的脚本,居然可以2023-09-08T18:35:58+08:002023-09-09T16:33:44+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>试了下CHDK上的脚本,居然可以</p>
<p>导出了G3X内核</p><p>安装arm工具链</p><p>反汇编一个</p>
<div class='imd'><a href='?show_image=20230908190243.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230908190243.jpg" alt="图片" data-imgsrc='20230908190243.jpg'></a></div><p>g3x ROM初始地址是 <code>0xfc000000</code></p><p>没闪成功 哈哈哈哈哈</p><p>可以闪了就是还不能启动</p>
<p>能运行到 boot()</p>2023/09/08 18:35:58 - 2023/09/09 16:33:44https://www.wellobserve.com/?post=20230903132620拿到证了哈2023-09-03T13:26:20+08:002023-09-03T13:26:20+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>拿到证了哈</p>2023/09/03 13:26:20 - 2023/09/03 13:26:20https://www.wellobserve.com/?post=20230812215853模拟水2023-08-12T21:58:53+08:002023-08-12T21:58:53+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>模拟水</p>
<p><a href="https://oimo.io/works/water/" target='_blank'>https://oimo.io/works/water/<sup>↗</sup></a></p>2023/08/12 21:58:53 - 2023/08/12 21:58:53https://www.wellobserve.com/?post=20221222165617 "Our Paint" software user manual2022-12-22T16:56:17+08:002023-08-08T17:21:50+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1> "Our Paint" software user manual</h1><h2>First time user</h2>
<p>Our Paint will save user preference in its root directory. You can move Our Paint directory to a different location and settings will be preserved. </p>
<p>Click the "🞆" button on the top left corner to create a new panel, you could drag panels and edges to rearrange the layout. To dock a floating panel, click "🗖" button, move your mouse to the desired region, then click to drop the panel there. To tear off a docked panel, drag the panel title to the center of that region and drop it. Drag the bottom right corner to adjust the size of a panel. Click the "🡹" button at the bottom middle of the canvas could maximize the canvas to the entire window.</p>
<div class='imd'><a href='?show_image=20221226221410.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221226221410.jpg" alt="图片 keep_inline" data-imgsrc='20221226221410.jpg'></a></div>
<p>You could use "🗗" new window button to create a new window, you can then dock some more panels and put that window on like other monitors.</p>
<p>If you created or downloaded brush files, you can put them in the root directory of Our Paint, or in the <code>UDFResource</code> directory, Brushes will then be loaded automatically when the program starts. You could also read resources manually from other locations on your computer.</p><h2>Start Drawing</h2>
<p>Drawing is done simply by hold down mouse left button and drag it across the canvas. Our Paint supports Wacom and Surface ipts pressure sensitive pen input (including tilt). If you closed the canvas panel accidentally, go practice the user interface manipulation as mentioned previously, and open a new one.</p>
<p>Check if you actually selected "Paint" mode in the tool panel (or on the application header), also make sure you have a layer and brush selected. (If you haven't deleted them, there should already be a selected layer and brush)</p>
<p>Drag the "◿" symbol on the color picker to adjust its size.</p>
<p>Press and hold middle mouse button to move the canvas, press and hold Ctrl+Middle mouse to zoom, press right mouse betton or Ctrl+Right mouse to pick up color from the canvas.</p>
<p>Other shortcuts:</p>
<table>
<thead>
<tr>
<th>Operations</th>
<th>Shortcuts</th>
</tr>
</thead>
<tbody>
<tr>
<td>Brush size decrease/increase</td>
<td><code>[</code> / <code>]</code></td>
</tr>
<tr>
<td>Undo/Redo</td>
<td><code>Ctrl+Z</code> / <code>Ctrl+Shift+Z</code></td>
</tr>
<tr>
<td>Undo/Redo</td>
<td><code>Ctrl+]</code> / <code>Ctrl+[</code></td>
</tr>
<tr>
<td>Canvas zoom out/in</td>
<td><code>,</code> / <code>.</code></td>
</tr>
<tr>
<td>Brush quick switch</td>
<td><code>0</code> ~ <code>9</code></td>
</tr>
</tbody>
</table>
<p>Select "Cropping" tool to adjust the final cropping of the canvas. By default cropping is disabled, click "Show Border" to enable it. You can drag and move the cropped region. Drag your mouse pointer outside the cropping region to adjust border position or size.</p>
<div class='imd'><a href='?show_image=20221226224543.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221226224543.jpg" alt="图片 keep_inline" data-imgsrc='20221226224543.jpg'></a></div>
<p>Our Paint stores all image content completely on your video memory. Please take a moment to estimate the memory cost if you need to draw/paint a huge painting. For integrated graphics, modern day Intel integrated graphics should be able to access up to half of the entire memory of your machine. Otherwise some machines also support setting VRAM limit inside BIOS. Our Paint uses 16bit, 1024px sized texture tiles to form a complete canvas, thus a painting of around ~1000px in size would roughly take 8MB~32MB of video memory.</p>
<h3>Layers</h3>
<p>Our Paint has a simple layer system. You could add, remove laerys as well as adjusting blending mode and transparency. Layers are not movable in current version, also it only supports "Normal" and "add" blending modes. Drag the "☰" symbol to the left of the layer name to reorder layers. Click "🠳" to merge the current layer with the one below it.</p>
<div class='imd'><a href='?show_image=20221228115254.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221228115254.jpg" alt="Images keep_inline" data-imgsrc='20221228115254.jpg'></a></div>
<p>You can adjust the background color of the canvas. When you started painting, the background color is locked to prevent accidental changes. To adjust it again, click "Locked" button, then it's unlocked.</p>
<p>You can set the color profile of the entire canvas in the layers panel, it's recommended to keep it in "sRGB" most of the time.</p>
<h3>Saving the canvas</h3>
<p>To save the canvas, use File→Save. If you haven't assigned a file for it, Our Paint will open a dialog. Click the drop down menu to the right side of the Main Canvas entry, select "< Save as a new file >", then specify a file in the file dialog. Our Paint allows 3 file extensions for saving data: "udf", "ourpaint", "ourbrush". You can choose either one, but to visually identify a canvas file, it's recommended to use "ourpaint". When you are done selecting the file, click the "Save all modified" button to the lower right corner of the dialog to save stuff.</p>
<p>Use File→Read to read any data file.</p>
<p>Unsaved data block would have a "🌑" icon showing to the left of their names. Our Paint will always open the saving dialog when you close the program if there's any unsaved data block or unassigned ones.</p>
<p>You could save brushes to the same file with the canvas, and if you open that file, those brushes will be loaded as well.</p><h2>Importing and exporting images</h2>
<p>Our Paint supports importing and exporting PNG images. It does not support interlaced PNG files, if you are unable to import some PNG files, please save that file with other image editing software and make sure to disable interlacing.</p>
<div class='imd'><a href='?show_image=20221226223720.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221226223720.jpg" alt="图片 keep_inline" data-imgsrc='20221226223720.jpg'></a></div>
<p>Import PNG as a new layer by using File→Import Layer. A dialog box would appear asking you how you would like to interpret the pixel value information in that file. Keeping the options on default should be fine most of the time, however you can also adjust them if the file is saved in a non-standard way.</p>
<p>Using File→Export Image could export your canvas as a composited PNG file. If canvas border is enabled, the composited image would follow the dimension of the cropping. You can also specify color space when exporting the image. It's also suggested to keep it at default value if you don't want to control the color management conversion process.</p><h2>Adjusting brushes</h2>
<p>Current version of Our Paint uses round/oval shaped brush dabs. You can adjust brush properties in "Paint" mode under "Tool" panel. Enable "Default as eraser" sets the brush as eraser by default, this is for when switching from other brushes into it, you can also manually enable "Erasing" to switch any brush into an eraser.</p>
<div class='imd'><a href='?show_image=20221228115548.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221228115548.jpg" alt="Images keep_inline" data-imgsrc='20221228115548.jpg'></a></div>
<p>Some brush properties supports pressure input. Click the "P" button to enable pressure controlling for that specific property.</p>
<p>Click the "☰" button to the right of brush names, you can set brush key binding down below. Set the value to anything form 0~9 and you should be able to switch to that brush with keyboard very quickly.</p>
<h3>Programmable brushes</h3>
<p>Enabling the "Use Nodes" switch to enable programmable brush. Click "Edit" will show the program editor of this brush in a new panel. You can also open a "Brush Nodes" panel manually and select the brush to be edited with the drop down menu on the top right.</p>
<p>There's no brush program by default, you need to manually add nodes and etc. Click "Add Rack" to add a rack, then click "Add Node" to add a node into that rack. The "Brush Device" and "Brush Settings" nodes under "Our Paint" category provided all the input you need, the "Brush Output" node under "Driver" category is used to control the final output style of the brush dab. How to transform the input value into the final dab style depends on your creativity.</p>
<p>Right click on any node would show a menu, which allows moving and deleting of the node. To move the node up and down. drag the "☰" symbol; to reorder nodes vertically, drag it with your right mouse button, or click the symbol, when it shows "🡙", drag it with left mouse button.</p>
<div class='imd'><a href='?show_image=20221228120451.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221228120451.jpg" alt="Images keep_inline" data-imgsrc='20221228120451.jpg'></a></div>
<p>Read about the <a href="?post=20230217162231" onclick='ShowWaitingBar()'>arguments for Our Paint brush nodes</a>.</p>
<p>You could refer to brushes that comes with Our Paint to get a better idea on how they work.</p>
<p>Some cautions:</p>
<ul>
<li>It's not recommended to output offset values that varies widely in one stroke, because this makes undo and other operations slow due to a bigger bounding box of the brush stroke.</li>
<li>The input "angle" is the angle that the mouse pointer gets dragged across the screen, typically ranging in [-pi,pi] , due to interpolation needs, sometimes a +-2pi can be added onto the input values, it should not cause much problems in trigonometry calculations.</li>
<li>The output "angle" is the squeezing direction of the oval brush dabs. Obviously this only works when "Slenderness" is not 0.</li>
</ul>
<h3>Saving and sharing brushes</h3>
<p>Use File→Save As to save brushes. Use the same method as saving the canvas. There's an identifier string to the left of the file selectors, if you want Our Paint to load this brush automatically when start, then you should include <code>OURBRUSH</code> in the identifier string, and keep the identifiers all unique (You should not have brushes with the same identifier where Our Paint is able to locate, as configured in the resource folder). If there are brushes with the same identifier, Our Paint will only load one (undefined as in which one).</p>
<p>After saving brushes, you can share this file directly. Put any brush file inside Our Paint root directory or any folders you configured in the resource section (see Settings chapter).</p><h2>Color management</h2>
<p>Our Paint has a primitive color management functionality. For Linux users, due to the limit of the operating sytem, you need to make sure that the desktop environment is <em>not</em> full-screen icc-corrected. Our Paint assumes that the OS output is always sRGB, even if you are on a wide-gamunt monitor (and don't worry, the monitor would always show full color range). It's recommended to always use sRGB color space for both display and canvas in Our Paint. If your monitor has close to full coverage of AdobeRGB, you can select display and canvas color space to "Clay" (This color space is fully compatible with AdobeRGB 1998). Make sure you double check what you want when exporting the image as in whether to convert it back to sRGB. There are still a lot of programs that doesn't handle PNG built-in icc profile correctly. Our Paint allows you to select color profiles when import/export files, in most cases it's recommended to use sRGB at every place.</p>
<p>Click the "🟩" button on the header to toggle stripe display for overflowing colors. When your canvas is in Clay color space, you can switch the display color space to sRGB to check if anything is overflowing.</p><h2>Settings</h2>
<p>Use Options→Show User Preferences to open the settings panel. In "Our Paint" page you could change undo step limit, with a maximum step of 256. Undo history will be cleared after reading <em>any</em> data files.</p>
<div class='imd'><a href='?show_image=20221228141649.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20221228141649.jpg" alt="图片 keep_inline" data-imgsrc='20221228141649.jpg'></a></div>
<p>In "Resource" page you can add a few more directories for resource files. Our Paint will load all brushes that contains <code>OURBRUSH</code> in their identifiers from these directories.</p><h2>Special considerations on Windows</h2>
<p>LaGUI isn't fully featured on Windows yet, if you encountered any problem, please report at the code repository.</p>
<p>If you feel the pen lags when you start a stroke (The stroke would wait just a little bit before starting to follow pen tip), then <strong><em>turn off </em></strong> "Allow pen as mouse input (if available)" option in Windows Pen/Ink settings.</p>
<p>You could choose to use Windows Ink (Tablet PCs) or WinTab (Wacom styluses) in Our Paint preferences to get pressure event. Your pen input may or may not be supported just yet.</p><h2>Launch Arguments</h2>
<p>Program launch arguments are available starting with Our Paint v0.1c. It's useful for getting information that could help developing the program.</p>
<ul>
<li><code>--gl-version=4.3</code> Force OpenGL version.</li>
<li><code>--gl-debug</code> Force OpenGL debug and performance information output.</li>
<li><code>--log</code> Output LaGUI messages to <code>stdout</code>.</li>
</ul>2022/12/22 16:56:17 - 2023/08/08 17:21:50https://www.wellobserve.com/?post=20230805221039额2023-08-05T22:10:39+08:002023-08-05T22:10:39+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>额</p>2023/08/05 22:10:39 - 2023/08/05 22:10:39https://www.wellobserve.com/?post=20230728191116车车晚点2023-07-28T19:11:16+08:002023-07-28T19:11:16+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>车车晚点</p>2023/07/28 19:11:16 - 2023/07/28 19:11:16https://www.wellobserve.com/?post=20230727233117Emergency escape by Chen Wenling2023-07-27T23:31:17+08:002023-07-27T23:31:17+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Emergency escape by Chen Wenling</p>
<p><a href="http://inspirationist.net/emergency-escape-by-chen-wenling/" target='_blank'>http://inspirationist.net/emergency-escape-by-chen-wenling/<sup>↗</sup></a></p>2023/07/27 23:31:17 - 2023/07/27 23:31:17https://www.wellobserve.com/?post=20230727084701啊啊啊啊啊啊下雨2023-07-27T08:47:01+08:002023-07-27T18:07:17+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>啊啊啊啊啊啊下雨</p><p>啊啊啊啊啊为什么又不下了</p>2023/07/27 08:47:01 - 2023/07/27 18:07:17https://www.wellobserve.com/?post=20230726210333早点睡早点睡2023-07-26T21:03:33+08:002023-07-26T21:03:33+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>早点睡早点睡</p>2023/07/26 21:03:33 - 2023/07/26 21:03:33https://www.wellobserve.com/?post=20230712215414去北京2023-07-12T21:54:14+08:002023-07-24T17:43:10+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>去北京</p>
<div class='imd'><a href='?show_image=20230712215342.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215342.jpg" alt="图片" data-imgsrc='20230712215342.jpg'></a></div><p>坐A350</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215346.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215346.jpg" alt="图片" data-imgsrc='20230712215346.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215347.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215347.jpg" alt="图片" data-imgsrc='20230712215347.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215340.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215340.jpg" alt="图片" data-imgsrc='20230712215340.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215341.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215341.jpg" alt="图片" data-imgsrc='20230712215341.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215344.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215344.jpg" alt="图片" data-imgsrc='20230712215344.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215345.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215345.jpg" alt="图片" data-imgsrc='20230712215345.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215348.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215348.jpg" alt="图片" data-imgsrc='20230712215348.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=202307122153450.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/202307122153450.jpg" alt="图片" data-imgsrc='202307122153450.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230712215349.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230712215349.jpg" alt="图片" data-imgsrc='20230712215349.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>飞机上</p>
<div class='imd'><a href='?show_image=20230722111811.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111811.jpg" alt="图片 keep_inline" data-imgsrc='20230722111811.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111748.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111748.jpg" alt="图片" data-imgsrc='20230722111748.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111749.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111749.jpg" alt="图片" data-imgsrc='20230722111749.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111754.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111754.jpg" alt="图片" data-imgsrc='20230722111754.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111755.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111755.jpg" alt="图片" data-imgsrc='20230722111755.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111756.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111756.jpg" alt="图片" data-imgsrc='20230722111756.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111757.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111757.jpg" alt="图片" data-imgsrc='20230722111757.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111800.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111800.jpg" alt="图片" data-imgsrc='20230722111800.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111801.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111801.jpg" alt="图片" data-imgsrc='20230722111801.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111808.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111808.jpg" alt="图片" data-imgsrc='20230722111808.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111809.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111809.jpg" alt="图片" data-imgsrc='20230722111809.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111736.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111736.jpg" alt="图片" data-imgsrc='20230722111736.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722111805.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722111805.jpg" alt="图片" data-imgsrc='20230722111805.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112424.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112424.jpg" alt="图片" data-imgsrc='20230722112424.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>房山</p>
<div class='imd'><a href='?show_image=20230722112335.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112335.jpg" alt="图片 keep_inline" data-imgsrc='20230722112335.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112430.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112430.jpg" alt="图片" data-imgsrc='20230722112430.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112333.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112333.jpg" alt="图片" data-imgsrc='20230722112333.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112314.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112314.jpg" alt="图片" data-imgsrc='20230722112314.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>Our Paint</p>
<div class='imd'><a href='?show_image=20230722112425.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112425.jpg" alt="图片" data-imgsrc='20230722112425.jpg'></a></div><p>博物馆 1</p>
<div class='imd'><a href='?show_image=20230722112311.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112311.jpg" alt="图片 keep_inline" data-imgsrc='20230722112311.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112431.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112431.jpg" alt="图片" data-imgsrc='20230722112431.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=202307221124110.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/202307221124110.jpg" alt="图片" data-imgsrc='202307221124110.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112416.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112416.jpg" alt="图片" data-imgsrc='20230722112416.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112414.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112414.jpg" alt="图片" data-imgsrc='20230722112414.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112349.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112349.jpg" alt="图片" data-imgsrc='20230722112349.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112321.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112321.jpg" alt="图片" data-imgsrc='20230722112321.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112312.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112312.jpg" alt="图片" data-imgsrc='20230722112312.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112320.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112320.jpg" alt="图片" data-imgsrc='20230722112320.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112347.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112347.jpg" alt="图片" data-imgsrc='20230722112347.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112303.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112303.jpg" alt="图片" data-imgsrc='20230722112303.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>博物馆 2</p>
<div class='imd'><a href='?show_image=20230722112259.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112259.jpg" alt="图片 keep_inline" data-imgsrc='20230722112259.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112411.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112411.jpg" alt="图片" data-imgsrc='20230722112411.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112420.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112420.jpg" alt="图片" data-imgsrc='20230722112420.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112855.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112855.jpg" alt="图片" data-imgsrc='20230722112855.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112913.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112913.jpg" alt="图片" data-imgsrc='20230722112913.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112918.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112918.jpg" alt="图片" data-imgsrc='20230722112918.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112919.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112919.jpg" alt="图片" data-imgsrc='20230722112919.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112922.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112922.jpg" alt="图片" data-imgsrc='20230722112922.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112948.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112948.jpg" alt="图片" data-imgsrc='20230722112948.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112956.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112956.jpg" alt="图片" data-imgsrc='20230722112956.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113019.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113019.jpg" alt="图片" data-imgsrc='20230722113019.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113307.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113307.jpg" alt="图片" data-imgsrc='20230722113307.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113310.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113310.jpg" alt="图片" data-imgsrc='20230722113310.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113317.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113317.jpg" alt="图片" data-imgsrc='20230722113317.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113318.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113318.jpg" alt="图片" data-imgsrc='20230722113318.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>博物馆 3</p>
<div class='imd'><a href='?show_image=20230722113014.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113014.jpg" alt="图片 keep_inline" data-imgsrc='20230722113014.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113454.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113454.jpg" alt="图片" data-imgsrc='20230722113454.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113006.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113006.jpg" alt="图片" data-imgsrc='20230722113006.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112925.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112925.jpg" alt="图片" data-imgsrc='20230722112925.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112946.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112946.jpg" alt="图片" data-imgsrc='20230722112946.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722112856.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722112856.jpg" alt="图片" data-imgsrc='20230722112856.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113028.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113028.jpg" alt="图片" data-imgsrc='20230722113028.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113031.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113031.jpg" alt="图片" data-imgsrc='20230722113031.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113257.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113257.jpg" alt="图片" data-imgsrc='20230722113257.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113009.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113009.jpg" alt="图片" data-imgsrc='20230722113009.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113007.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113007.jpg" alt="图片" data-imgsrc='20230722113007.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113303.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113303.jpg" alt="图片" data-imgsrc='20230722113303.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113306.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113306.jpg" alt="图片" data-imgsrc='20230722113306.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113322.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113322.jpg" alt="图片" data-imgsrc='20230722113322.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>博物馆 4</p>
<div class='imd'><a href='?show_image=20230722113421.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113421.jpg" alt="图片 keep_inline" data-imgsrc='20230722113421.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113401.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113401.jpg" alt="图片" data-imgsrc='20230722113401.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113408.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113408.jpg" alt="图片" data-imgsrc='20230722113408.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113441.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113441.jpg" alt="图片" data-imgsrc='20230722113441.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113444.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113444.jpg" alt="图片" data-imgsrc='20230722113444.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113449.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113449.jpg" alt="图片" data-imgsrc='20230722113449.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113327.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113327.jpg" alt="图片" data-imgsrc='20230722113327.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113337.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113337.jpg" alt="图片" data-imgsrc='20230722113337.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113358.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113358.jpg" alt="图片" data-imgsrc='20230722113358.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113359.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113359.jpg" alt="图片" data-imgsrc='20230722113359.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=202307221134080.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/202307221134080.jpg" alt="图片" data-imgsrc='202307221134080.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113440.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113440.jpg" alt="图片" data-imgsrc='20230722113440.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113443.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113443.jpg" alt="图片" data-imgsrc='20230722113443.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722113442.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722113442.jpg" alt="图片" data-imgsrc='20230722113442.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114947.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114947.jpg" alt="图片" data-imgsrc='20230722114947.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>回来</p>
<div class='imd'><a href='?show_image=20230722114853.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114853.jpg" alt="图片 keep_inline" data-imgsrc='20230722114853.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114859.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114859.jpg" alt="图片" data-imgsrc='20230722114859.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114911.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114911.jpg" alt="图片" data-imgsrc='20230722114911.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114913.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114913.jpg" alt="图片" data-imgsrc='20230722114913.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114927.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114927.jpg" alt="图片" data-imgsrc='20230722114927.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114906.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114906.jpg" alt="图片" data-imgsrc='20230722114906.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114903.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114903.jpg" alt="图片" data-imgsrc='20230722114903.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114857.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114857.jpg" alt="图片" data-imgsrc='20230722114857.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114909.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114909.jpg" alt="图片" data-imgsrc='20230722114909.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>飞机上</p>
<div class='imd'><a href='?show_image=20230722114928.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114928.jpg" alt="图片 keep_inline" data-imgsrc='20230722114928.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114904.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114904.jpg" alt="图片" data-imgsrc='20230722114904.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114931.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114931.jpg" alt="图片" data-imgsrc='20230722114931.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114930.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114930.jpg" alt="图片" data-imgsrc='20230722114930.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114924.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114924.jpg" alt="图片" data-imgsrc='20230722114924.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230722114935.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230722114935.jpg" alt="图片" data-imgsrc='20230722114935.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>没得了</p>2023/07/12 21:54:14 - 2023/07/24 17:43:10https://www.wellobserve.com/?post=20230723112325昨天2023-07-23T11:23:25+08:002023-07-23T11:23:25+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>昨天</p>
<div class='imd'><a href='?show_image=20230723112220.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230723112220.jpg" alt="图片 keep_inline" data-imgsrc='20230723112220.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230723112230.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230723112230.jpg" alt="图片" data-imgsrc='20230723112230.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230723112232.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230723112232.jpg" alt="图片" data-imgsrc='20230723112232.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230723112233.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230723112233.jpg" alt="图片" data-imgsrc='20230723112233.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/07/23 11:23:25 - 2023/07/23 11:23:25https://www.wellobserve.com/?post=20230722120743图传多了预览一页张数不够找不到emmm2023-07-22T12:07:43+08:002023-07-22T12:07:43+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>图传多了预览一页张数不够找不到emmm</p>2023/07/22 12:07:43 - 2023/07/22 12:07:43https://www.wellobserve.com/?post=20230423202824LuaJIT 好用2023-04-23T20:28:24+08:002023-07-21T23:06:30+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>LuaJIT 好用</p>
<div class='imd'><a href='?show_image=20230423202809.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230423202809.jpg" alt="图片" data-imgsrc='20230423202809.jpg'></a></div><p>按道理一个 LuaState 的状态都是共享的,因此分享变量什么的也没有问题,而且这样一来比用节点get/set还方便因为不需要 laGUI 来管理和与lua同步(虽然要这么做也没什么大问题)。</p><p><code>luaL_loadstring()</code> 会将载入的字符串作为一个函数推到栈上,然后理论上可以通过 <code>lua_setglobal()</code> 弹出并设置一个全局名字,之后要调用的时候获得对应的全局对象,压回去然后 <code>lua_pcall()</code> 应该就可以了。</p><p>返回一个表就可以用点引用的方式调里面的函数。</p><p>用 <code>dlsym</code> 可以从符号表里找函数入口地址。</p><p>可以用单个 <code>lua_State</code> ,提供主要内建变量,如 <code>object</code> 等用于每个实例的访问,同时带有一个实例列表以实际储存每个实例的表,用唯一索引访问,删除后原索引保留因此这样做没有问题。</p>
<p>要读出到节点来访问,则读当前实例的表,应该可行。这样还有个好处是可能不需要再做一套属性系统了。</p>2023/04/23 20:28:24 - 2023/07/21 23:06:30https://www.wellobserve.com/?post=20230718230326搞忘把剩下的照片传上来了2023-07-18T23:03:26+08:002023-07-18T23:03:26+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>搞忘把剩下的照片传上来了</p>2023/07/18 23:03:26 - 2023/07/18 23:03:26https://www.wellobserve.com/?post=20230629220208咦怎么还没到2023-06-29T22:02:08+08:002023-07-11T21:42:52+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>咦怎么还没到</p><p>怪嘞</p><p>Emmmmm</p><p>峨峨峨峨峨峨峨</p><p>是因为没有外汇账户</p>2023/06/29 22:02:08 - 2023/07/11 21:42:52https://www.wellobserve.com/?post=20230708113523Nasa 的旋转爆炸引擎试车2023-07-08T11:35:23+08:002023-07-08T11:35:23+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Nasa 的旋转爆炸引擎试车</p>
<p><a href="https://twitter.com/NASA_Marshall/status/1619379785234259969?t=jyrdRrOd_pWZXqEIvCf8qg&s=19" target='_blank'>https://twitter.com/NASA_Marshall/status/1619379785234259969?t=jyrdRrOd_pWZXqEIvCf8qg&s=19<sup>↗</sup></a></p>2023/07/08 11:35:23 - 2023/07/08 11:35:23https://www.wellobserve.com/?post=20230702171702今天2023-07-02T17:17:02+08:002023-07-02T22:47:22+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Today</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230702171646.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230702171646.jpg" alt="图片" data-imgsrc='20230702171646.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230702171648.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230702171648.jpg" alt="图片" data-imgsrc='20230702171648.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>花花遭鱼吃完了</p>2023/07/02 17:17:02 - 2023/07/02 22:47:22https://www.wellobserve.com/?post=20230702103728前几天2023-07-02T10:37:28+08:002023-07-02T10:37:28+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>前几天</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230702103711.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230702103711.jpg" alt="图片" data-imgsrc='20230702103711.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230702103712.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230702103712.jpg" alt="图片" data-imgsrc='20230702103712.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/07/02 10:37:28 - 2023/07/02 10:37:28https://www.wellobserve.com/?post=20230628211839@到了2023-06-28T21:18:39+08:002023-06-28T21:18:39+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p>FPGA游戏机 <a href="https://www.analogue.co/pocket" target='_blank'>https://www.analogue.co/pocket<sup>↗</sup></a></p>2023/06/28 21:18:39 - 2023/06/28 21:18:39https://www.wellobserve.com/?post=20230627221857(X^{2}) 这是什么格式2023-06-27T22:18:57+08:002023-06-27T22:21:14+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>(X^{2}) 这是什么格式</p><p>好像是LaTeX 这个这里不支持……</p>2023/06/27 22:18:57 - 2023/06/27 22:21:14https://www.wellobserve.com/?post=20230627160327emmmm2023-06-27T16:03:27+08:002023-06-27T16:03:27+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>emmmm</p>2023/06/27 16:03:27 - 2023/06/27 16:03:27https://www.wellobserve.com/?post=20230620121839驱动又坏了 算了2023-06-20T12:18:39+08:002023-06-20T12:18:39+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>驱动又坏了 算了</p>2023/06/20 12:18:39 - 2023/06/20 12:18:39https://www.wellobserve.com/?post=20230617182708?2023-06-17T18:27:08+08:002023-06-17T18:27:08+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>?</p>
<div class='imd'><a href='?show_image=20230617182656.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230617182656.jpg" alt="图片" data-imgsrc='20230617182656.jpg'></a></div>2023/06/17 18:27:08 - 2023/06/17 18:27:08https://www.wellobserve.com/?post=20230613232310草 网站的rss会不会有问题2023-06-13T23:23:10+08:002023-06-13T23:24:32+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>草 网站的rss会不会有问题</p><p>暂时认为没有233</p>2023/06/13 23:23:10 - 2023/06/13 23:24:32https://www.wellobserve.com/?post=20230606142823局部关闭的39号公路2023-06-06T14:28:23+08:002023-06-06T14:28:23+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>局部关闭的39号公路</p>
<p><a href="https://en.wikipedia.org/wiki/California_State_Route_39" target='_blank'>https://en.wikipedia.org/wiki/California_State_Route_39<sup>↗</sup></a></p>2023/06/06 14:28:23 - 2023/06/06 14:28:23https://www.wellobserve.com/?post=20230605161617额2023-06-05T16:16:17+08:002023-06-05T16:16:17+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>额</p>2023/06/05 16:16:17 - 2023/06/05 16:16:17https://www.wellobserve.com/?post=20230525152504好像没有同步tinyshed的代码到卡上2023-05-25T15:25:04+08:002023-05-25T15:25:04+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>好像没有同步tinyshed的代码到卡上</p>2023/05/25 15:25:04 - 2023/05/25 15:25:04https://www.wellobserve.com/?post=20230518203159把新帝拆下来2023-05-18T20:31:59+08:002023-05-18T20:31:59+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>把新帝拆下来</p>2023/05/18 20:31:59 - 2023/05/18 20:31:59https://www.wellobserve.com/?post=20230513220349未命名2023-05-13T22:03:49+08:002023-05-13T22:03:49+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<div class='imd'><a href='?show_image=20230513220325.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230513220325.jpg" alt="图片" data-imgsrc='20230513220325.jpg'></a></div>2023/05/13 22:03:49 - 2023/05/13 22:03:49https://www.wellobserve.com/?post=20230508212011未命名2023-05-08T21:20:11+08:002023-05-08T21:24:52+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<p>DS50000 的绿色。。。</p>
<p>好像条的有点灰</p>
<div class='imd'><a href='?show_image=20230508211950.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230508211950.jpg" alt="图片" data-imgsrc='20230508211950.jpg'></a></div>2023/05/08 21:20:11 - 2023/05/08 21:24:52https://www.wellobserve.com/?post=20230507204750参数化雨声音2023-05-07T20:47:50+08:002023-05-07T20:47:50+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>参数化雨声音</p>
<p><a href="https://ldjam.com/events/ludum-dare/53/rain-on-their-parade/synthesized-rain-patch-for-rain-on-their-parade" target='_blank'>https://ldjam.com/events/ludum-dare/53/rain-on-their-parade/synthesized-rain-patch-for-rain-on-their-parade<sup>↗</sup></a></p>2023/05/07 20:47:50 - 2023/05/07 20:47:50https://www.wellobserve.com/?post=20230507142845今天2023-05-07T14:28:45+08:002023-05-07T14:28:45+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Today</p>
<div class='imd'><a href='?show_image=20230507142817.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230507142817.jpg" alt="图片" data-imgsrc='20230507142817.jpg'></a></div>2023/05/07 14:28:45 - 2023/05/07 14:28:45https://www.wellobserve.com/?post=20230505191607未命名2023-05-05T19:16:07+08:002023-05-05T19:16:07+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<div class='imd'><a href='?show_image=20230505191516.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230505191516.jpg" alt="图片" data-imgsrc='20230505191516.jpg'></a></div>2023/05/05 19:16:07 - 2023/05/05 19:16:07https://www.wellobserve.com/?post=20230505110927未命名2023-05-05T11:09:27+08:002023-05-05T11:09:27+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<div class='imd'><a href='?show_image=20230505110906.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230505110906.jpg" alt="图片" data-imgsrc='20230505110906.jpg'></a></div>2023/05/05 11:09:27 - 2023/05/05 11:09:27https://www.wellobserve.com/?post=20230504231517笔坏了 emmm2023-05-04T23:15:17+08:002023-05-04T23:15:17+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>笔坏了 emmm</p>2023/05/04 23:15:17 - 2023/05/04 23:15:17https://www.wellobserve.com/?post=20230504211139未命名2023-05-04T21:11:39+08:002023-05-04T21:11:39+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Unamed</p>
<div class='imd'><a href='?show_image=20230504210903.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230504210903.jpg" alt="图片" data-imgsrc='20230504210903.jpg'></a></div>2023/05/04 21:11:39 - 2023/05/04 21:11:39https://www.wellobserve.com/?post=20230504153232折纸飞机网2023-05-04T15:32:32+08:002023-05-04T15:32:32+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>折纸飞机网</p>
<p><a href="https://papieravion.org" target='_blank'>https://papieravion.org<sup>↗</sup></a></p>2023/05/04 15:32:32 - 2023/05/04 15:32:32https://www.wellobserve.com/?post=20230503211254Continental
2023-05-03T21:12:54+08:002023-05-03T21:12:54+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h2>Continental</h2>
<div class='imd'><a href='?show_image=20230503211123.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230503211123.jpg" alt="图片" data-imgsrc='20230503211123.jpg'></a></div>2023/05/03 21:12:54 - 2023/05/03 21:12:54https://www.wellobserve.com/?post=20230420192141@到了2023-04-20T19:21:41+08:002023-04-20T19:21:41+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p>音乐DSP大全</p>
<p><a href="https://www.musicdsp.org" target='_blank'>https://www.musicdsp.org<sup>↗</sup></a></p>2023/04/20 19:21:41 - 2023/04/20 19:21:41https://www.wellobserve.com/?post=20230418114654基于DAG的流控要放在每个分支的最后面,这可能看起来比较奇怪2023-04-18T11:46:54+08:002023-04-18T11:46:54+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>基于DAG的流控要放在每个分支的最后面,这可能看起来比较奇怪</p>2023/04/18 11:46:54 - 2023/04/18 11:46:54https://www.wellobserve.com/?post=20230417234044@到了2023-04-17T23:40:44+08:002023-04-18T11:47:09+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com
<p>自己写超简单游戏 系列视频</p>
<p><a href="https://www.youtube.com/playlist?list=PLrOv9FMX8xJE8NgepZR1etrsU63fDDGxO" target='_blank'>https://www.youtube.com/playlist?list=PLrOv9FMX8xJE8NgepZR1etrsU63fDDGxO<sup>↗</sup></a></p>2023/04/17 23:40:44 - 2023/04/18 11:47:09https://www.wellobserve.com/?post=20230406192651今天2023-04-06T19:26:51+08:002023-04-11T23:13:28+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Today</p>
<div class='imd'><a href='?show_image=20230406192615.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230406192615.jpg" alt="图片" data-imgsrc='20230406192615.jpg'></a></div><p>7号</p>
<div class='imd'><a href='?show_image=20230410120357.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120357.jpg" alt="图片 keep_inline" data-imgsrc='20230410120357.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120320.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120320.jpg" alt="图片" data-imgsrc='20230410120320.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120315.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120315.jpg" alt="图片" data-imgsrc='20230410120315.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120313.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120313.jpg" alt="图片" data-imgsrc='20230410120313.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120332.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120332.jpg" alt="图片" data-imgsrc='20230410120332.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120351.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120351.jpg" alt="图片" data-imgsrc='20230410120351.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230410120345.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230410120345.jpg" alt="图片" data-imgsrc='20230410120345.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>8号</p>
<div class='imd'><a href='?show_image=20230411160330.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160330.jpg" alt="图片 keep_inline" data-imgsrc='20230411160330.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160301.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160301.jpg" alt="图片" data-imgsrc='20230411160301.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160306.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160306.jpg" alt="图片" data-imgsrc='20230411160306.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160331.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160331.jpg" alt="图片" data-imgsrc='20230411160331.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160233.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160233.jpg" alt="图片" data-imgsrc='20230411160233.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160327.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160327.jpg" alt="图片" data-imgsrc='20230411160327.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160323.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160323.jpg" alt="图片" data-imgsrc='20230411160323.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160223.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160223.jpg" alt="图片" data-imgsrc='20230411160223.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160325.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160325.jpg" alt="图片" data-imgsrc='20230411160325.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160328.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160328.jpg" alt="图片" data-imgsrc='20230411160328.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160322.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160322.jpg" alt="图片" data-imgsrc='20230411160322.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160223.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160223.jpg" alt="图片" data-imgsrc='20230411160223.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160216.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160216.jpg" alt="图片" data-imgsrc='20230411160216.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160209.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160209.jpg" alt="图片" data-imgsrc='20230411160209.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160215.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160215.jpg" alt="图片" data-imgsrc='20230411160215.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160204.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160204.jpg" alt="图片" data-imgsrc='20230411160204.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160207.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160207.jpg" alt="图片" data-imgsrc='20230411160207.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>9号</p>
<div class='imd'><a href='?show_image=20230411160823.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160823.jpg" alt="图片 keep_inline" data-imgsrc='20230411160823.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160224.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160224.jpg" alt="图片" data-imgsrc='20230411160224.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160928.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160928.jpg" alt="图片" data-imgsrc='20230411160928.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160943.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160943.jpg" alt="图片" data-imgsrc='20230411160943.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160839.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160839.jpg" alt="图片" data-imgsrc='20230411160839.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161010.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161010.jpg" alt="图片" data-imgsrc='20230411161010.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160927.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160927.jpg" alt="图片" data-imgsrc='20230411160927.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160915.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160915.jpg" alt="图片" data-imgsrc='20230411160915.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160937.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160937.jpg" alt="图片" data-imgsrc='20230411160937.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160817.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160817.jpg" alt="图片" data-imgsrc='20230411160817.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160953.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160953.jpg" alt="图片" data-imgsrc='20230411160953.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>10号</p>
<div class='imd'><a href='?show_image=20230411161305.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161305.jpg" alt="图片 keep_inline" data-imgsrc='20230411161305.jpg'></a></div>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160838.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160838.jpg" alt="图片" data-imgsrc='20230411160838.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160825.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160825.jpg" alt="图片" data-imgsrc='20230411160825.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=202304111610090.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/202304111610090.jpg" alt="图片" data-imgsrc='202304111610090.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160820.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160820.jpg" alt="图片" data-imgsrc='20230411160820.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160831.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160831.jpg" alt="图片" data-imgsrc='20230411160831.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160859.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160859.jpg" alt="图片" data-imgsrc='20230411160859.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160903.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160903.jpg" alt="图片" data-imgsrc='20230411160903.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160940.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160940.jpg" alt="图片" data-imgsrc='20230411160940.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161006.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161006.jpg" alt="图片" data-imgsrc='20230411161006.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161003.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161003.jpg" alt="图片" data-imgsrc='20230411161003.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160941.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160941.jpg" alt="图片" data-imgsrc='20230411160941.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161009.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161009.jpg" alt="图片" data-imgsrc='20230411161009.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161316.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161316.jpg" alt="图片" data-imgsrc='20230411161316.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160958.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160958.jpg" alt="图片" data-imgsrc='20230411160958.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161410.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161410.jpg" alt="图片" data-imgsrc='20230411161410.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161419.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161419.jpg" alt="图片" data-imgsrc='20230411161419.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161420.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161420.jpg" alt="图片" data-imgsrc='20230411161420.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161423.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161423.jpg" alt="图片" data-imgsrc='20230411161423.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161424.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161424.jpg" alt="图片" data-imgsrc='20230411161424.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161433.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161433.jpg" alt="图片" data-imgsrc='20230411161433.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161439.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161439.jpg" alt="图片" data-imgsrc='20230411161439.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161447.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161447.jpg" alt="图片" data-imgsrc='20230411161447.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161446.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161446.jpg" alt="图片" data-imgsrc='20230411161446.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161440.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161440.jpg" alt="图片" data-imgsrc='20230411161440.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411160934.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411160934.jpg" alt="图片" data-imgsrc='20230411160934.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161445.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161445.jpg" alt="图片" data-imgsrc='20230411161445.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161355.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161355.jpg" alt="图片" data-imgsrc='20230411161355.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161323.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161323.jpg" alt="图片" data-imgsrc='20230411161323.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230411161347.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161347.jpg" alt="图片" data-imgsrc='20230411161347.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div><p>Today</p>
<div class='imd'><a href='?show_image=20230411161314.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411161314.jpg" alt="图片" data-imgsrc='20230411161314.jpg'></a></div>2023/04/06 19:26:51 - 2023/04/11 23:13:28https://www.wellobserve.com/?post=20230316192815LOMO 手摇机器和工业相机高拍可以作为一种低成本的胶片录像制作手段2023-03-16T19:28:15+08:002023-04-11T21:18:42+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>LOMO 手摇机器和工业相机高拍可以作为一种低成本的胶片录像制作手段</p><p>似乎可以通过软轴驱动 Lomokino ,这时不需要在机器右侧做一个大盒子,而电机可以做成手柄式的结构,好处是不需要为多个 Lomokino 分别制作一套驱动。</p><p>算了下市场价,好像杂个都不便宜</p>2023/03/16 19:28:15 - 2023/04/11 21:18:42https://www.wellobserve.com/?post=20230411154548目前选择了 NanoVG ,用起来非常方便并且似乎性能不错。2023-04-11T15:45:48+08:002023-04-11T15:45:48+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>目前选择了 NanoVG ,用起来非常方便并且似乎性能不错。</p>
<p><a href="?post=20230327105800" onclick='ShowWaitingBar()'>GPU画矢量</a></p><div class='imd'><a href='?show_image=20230411154542.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230411154542.jpg" alt="图片" data-imgsrc='20230411154542.jpg'></a></div>2023/04/11 15:45:48 - 2023/04/11 15:45:48https://www.wellobserve.com/?post=20230327105800https://github.com/raphlinus/piet-gpu2023-03-27T10:58:00+08:002023-03-27T11:47:01+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p><a href="https://github.com/raphlinus/piet-gpu" target='_blank'>https://github.com/raphlinus/piet-gpu<sup>↗</sup></a></p>
<p><a href="https://github.com/linebender/vello" target='_blank'>https://github.com/linebender/vello<sup>↗</sup></a></p>
<p>这个东西可能适合制作一个在GPU上运行的矢量游戏引擎</p><p><a href="https://w3.impa.br/~diego/projects/GanEtAl14/" target='_blank'>https://w3.impa.br/~diego/projects/GanEtAl14/<sup>↗</sup></a></p><p><a href="https://bevyengine.org/" target='_blank'>https://bevyengine.org/<sup>↗</sup></a></p><p><a href="https://github.com/servo/pathfinder" target='_blank'>https://github.com/servo/pathfinder<sup>↗</sup></a> ← 这个有简单的C绑定,似乎可以直接用在当前上下文中。</p><p><a href="https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/graphics/lib/compute/spinel/" target='_blank'>https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master/src/graphics/lib/compute/spinel/<sup>↗</sup></a></p>
<p>这个是 Vulkan 的</p>2023/03/27 10:58:00 - 2023/03/27 11:47:01https://www.wellobserve.com/?post=20230324133016Powdered Gold
2023-03-24T13:30:16+08:002023-03-24T13:30:55+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Powdered Gold</h1>
<div class='imd'><a href='?show_image=20230324125640.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/20230324125640.jpg" alt="图片 keep_inline original" data-imgsrc='20230324125640.jpg' class='original_img'></a></div><p>局部</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230324125407.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230324125407.jpg" alt="图片" data-imgsrc='20230324125407.jpg' data-parent='20230324125640'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230324125409.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230324125409.jpg" alt="图片" data-imgsrc='20230324125409.jpg' data-parent='20230324125640'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230324125406.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230324125406.jpg" alt="图片" data-imgsrc='20230324125406.jpg' data-parent='20230324125640'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/03/24 13:30:16 - 2023/03/24 13:30:55https://www.wellobserve.com/?post=20230318174623Dahon 那个新的26寸的折叠车 架子好看2023-03-18T17:46:23+08:002023-03-18T17:46:23+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Dahon 那个新的26寸的折叠车 架子好看</p>2023/03/18 17:46:23 - 2023/03/18 17:46:23https://www.wellobserve.com/?post=20230312225512那个带坝坝的房子好安逸啊2023-03-12T22:55:12+08:002023-03-12T22:55:12+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>那个带坝坝的房子好安逸啊</p>2023/03/12 22:55:12 - 2023/03/12 22:55:12https://www.wellobserve.com/?post=20230312225444今天2023-03-12T22:54:44+08:002023-03-12T22:54:44+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Today</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230312225416.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230312225416.jpg" alt="图片" data-imgsrc='20230312225416.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230312225424.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230312225424.jpg" alt="图片" data-imgsrc='20230312225424.jpg'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230312225425.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230312225425.jpg" alt="图片" data-imgsrc='20230312225425.jpg'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/03/12 22:54:44 - 2023/03/12 22:54:44https://www.wellobserve.com/?post=20230307171657Valley #2
2023-03-07T17:16:57+08:002023-03-07T17:20:04+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<h1>Valley #2</h1>
<div class='imd'><a href='?show_image=20230307171439.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/20230307171439.jpg" alt="图片 original keep_inline" data-imgsrc='20230307171439.jpg' class='original_img'></a></div><p>局部</p>
<div class='p_row'><div class='p_thumb'><div class='imd'><a href='?show_image=20230307171428.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230307171428.jpg" alt="图片" data-imgsrc='20230307171428.jpg' data-parent='20230307171439'></a></div></div><div class='p_thumb'><div class='imd'><a href='?show_image=20230307171427.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230307171427.jpg" alt="图片" data-imgsrc='20230307171427.jpg' data-parent='20230307171439'></a></div></div><div class='p_thumb' style='flex-grow:10000;box-shadow:none;height:0;'></div></div>2023/03/07 17:16:57 - 2023/03/07 17:20:04https://www.wellobserve.com/?post=20230304143032今天2023-03-04T14:30:32+08:002023-03-04T14:30:32+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>Today</p>
<div class='imd'><a href='?show_image=20230304143015.jpg' target='_blank' onclick='event.preventDefault();'><img src="images/thumb/20230304143015.jpg" alt="图片" data-imgsrc='20230304143015.jpg'></a></div>2023/03/04 14:30:32 - 2023/03/04 14:30:32https://www.wellobserve.com/?post=20230301153851额 必须要在当月文件占个坑不然改名后导致文件空白就不会删掉那个记录。。。2023-03-01T15:38:51+08:002023-03-01T16:21:19+08:00吴奕茗chengdulittlea@outlook.comhttps://www.wellobserve.com<p>额 必须要在当月文件占个坑不然改名后导致文件空白就不会删掉那个记录。。。</p>2023/03/01 15:38:51 - 2023/03/01 16:21:19