背景曲面分块,尤其是二次曲面分块,在工业应用中尤为重要,不仅仅是物体扫描点云并且逆向构建 CAD 模型,还是工业设计中棱边和倒角的识别,以及工业机械零件的设计和制造,都起着至关重要的作用。本文将介绍一篇今年的 Transaction on Graphics ,来自深圳大学,题目是《Split-and-Fit Learning B-Reps via Structure-Aware Voronoi Partitioning》。这篇文章提出了一种新的曲面分块方法,巧妙运用 无符号距离场(UDF) 和 Voronoi 分割 的方法,运用了无符号距离场和表面曲率的关系,在空间上实现了场的分块,从而实现了曲面的 Split,唯一美中不足的是本文最后还是使用深度学习的方法计算场,虽然这有效避免了传统方法针对不同模型其曲率分块参数不同需要单独设置的问题,但是深度学习的方法对于工业应用的可解释性和泛化性还是有待考量,并且该文章在缺点分析出提出的分块效果不理想的情况,笔者认为这也可能是深度学习数据集不够或者模型结构还有优化空间导致的。
预备知识无符号距离场(UDF)无符号距离场是一种用于表示曲面的方法,其 ...
问题的出现基于对样条的突然感兴趣和样条函数编码经验的匮乏之间的矛盾,最近突发奇想想做一个比较通用的可视化工具,能加到系统设置里随时方便的查看常用的 ’.stp’,’.m’,’.hex’ 等文件。于是重新拿起GLFW来做可视化界面。最开始是neovim + CMake + Mingw的工作流。报一个静态lib库的问题,初步判断是编译器的原因。于是转到visual studio 2022 进一步调试。可奇怪的是原本能编译能汇编的项目显示大量函数未在正确的地方定义😅,于是开始了极具戏剧感的排查过程。
排查时出现的意外本身在命令行使用 Clang 编译是没有太大的问题的,可能真就只是缺了一个 lib 的问题,后来实在是排查完没有缺的 lib 才决定使用一个大型 IDE 来查看详细报告。
此时的报错如下,如果稍微熟悉一点 OpenGL 的话应该知道是其中一个 lib 库依赖于系统内部自带的 OpenGL32.lib 库,但这不是重点。
1234567891011121314151617181920212223242526272829303132333435363738394041424344 ...
背景重心坐标在三维动画制作中可以被当作几何形变的启发,从而获得一系列应用,本文是最新的重心坐标计算方法,利用大量前置知识获得一个不依赖于控制点数量以及质量的重心计算方法,高效地获得控制点以及三维物体本身的映射关系。
本文不仅仅是对 《Stochastic Computation of Barycentric Coordinates》的阅读笔记,还是对几何形变控制相关工作的阅读总结,会介绍一系列经典的重心坐标计算方法以及他们的应用。
插值算法(光栅化)在计算机图形学中,插值算法是一种用于计算两个已知数值之间的中间值的方法,通常用于计算两个已知颜色之间的中间颜色,或者计算两个已知点之间的中间点。插值算法的应用非常广泛,例如在图像处理中,插值算法可以用于图像的缩放、旋转、变形等操作。比较常见的插值算法应用是三角网格面片着色的插值算法,通过定义各个点的颜色即可实现面片着色。除此之外还包括纹理贴图和法向贴图等应用方法,理论上针对一个三角形,任何三维及以上的指标都可以通过定义三角形上三个点的指标来获取三角形内部任意一点的指标,点的坐标也不例外。
目标(输入输出)框架(Cage)内部任意一点坐标信息 ...
两个月的暑假不长不短,中间也夹杂着不少事情,包括 OCC 的 Qt 界面,同时也接手了师兄的六面体网格拓扑优化的相关工作,外加两个项目结项后奖励自己的广东四日游和云南五日游,属实是前期摆烂后期疯狂的大状态🥺。
写这篇博客时的精神状态♨️收拾完宿舍,打扫完工位,现在终于又回到了每天在电脑前发呆的好日子,暑期断更很久的博客或许也可以慢慢恢复周更了(希望吧)
第一次坐八个小时的中转不知道是无疫情时代的没有错峰返校的概念,几乎整个大连的开学日期都定在了九月一号,所以第一次坐了八个小时的中转,还好有凹凸电波的海龟汤节目替我解闷。同时还不得不吐槽的是原本以为浦东机场很大会很好玩,结果对于需要中转舍不得买直飞的我而言只能看着里面三位数的拉面发出尖锐爆鸣声,好在有个711缓解我的一时之急💢。从长沙上海然后在浦东机场猛等八个小时然后凌晨12点才到机场,一点钟到洗浴中心过了个夜,更值得一提的是难得看到百溪泉的床位都满了,不知道是不是开学的原因😠。
买了一堆东西开学前几天在网上买了一堆东西,同样是开学的原因,很多东西物流都比想象的要慢,其中就包括褥子,使得我躺了两天的板板,好在床垫比本科时期的要软一点 ...
📍广州🌆
📍澳门🎰
预约Apple Vision Pro 国行已经发布一个月了,热度明显降下来不少,如果是有 APPLE 直营店的城市只需要提前三四天在官网预约就可以了。
体验虽然很多人都说这个完成度很高,不过3w的价格又劝退了大部分人,不过实际体验下来才发现这个和理想的 MR 眼睛还是有一定差距的。
分辨率
针对现在大多数视频的极限 8K 的分辨率,从数值上看很高,但实际上 4K 大概是 14 寸笔记本电脑屏幕的极限,而 8K 是 28 寸显示器的极限,但针对 Apple Vision Pro 这种眼镜式的显示器,它所显示的屏幕是铺满整个眼球的,咪咕视频里有一个与犀牛相关的 8K 视频,看起来还是有点模糊的,想要获得最佳体验,不仅仅是显示设备,还需要视频源的支持,这个还是有一定的门槛的。
性能
演示模块里有一款恐龙主题的 3D 游戏,其画面输出是远比 8K 要高的。与此同时,我一直在问技术服务人员一个问题就是这里的蝴蝶和恐龙是否是在跟着我的手势移动。得到了肯定的结果也就意味着所有的场景都是实时渲染的。不过值得一提的是恐龙嘴部尤其是嘴巴微张这个动作时,显然外部光线是不足的但是内部光线却十分清晰。 ...
需求分析为解决基于特征值特征向量的柱面识别策略不鲁棒的问题,本文在上周工作的基础上提出了一种基于棱线配对的柱面识别策略。
输入输出
输入:局部可能包含柱面和椭球面的三维离散化网格
输出:柱面的参数
识别策略既然是基于棱线配对的柱面识别策略,那么首先我们需要获取棱线。在网格生成中,棱线是一个很重要的概念,它是由两个顶点组成的线段,而顶点是由三角形面共享的。因此,我们可以通过遍历所有的三角形面,获取所有的棱线。在此之后,需要对棱线进行几何意义上的分段与拟合,获取棱线局部的曲率半径及曲率中心,选择出属于局部圆形的棱线。在此之后,需要对识别出的圆进行剪枝,这一步比较依赖于经验,因为不同模型数量级和大小不同,剪枝策略下对应的阈值参数也不同。最后需要对剪枝后的圆进行参数化,并将各个圆形两两配对,得到最终的柱面参数。
棱线获取设置宏定义`EDGE_INDEX’,通过遍历所有的边,根据其相邻面片法向量的差是否大于’EDGE_INDEX’来判断是否为棱线。
以下是一个代码示例,并非基于MeshLib的实现,仅供参考。
1234567891011121314#define EDGE_INDEX ...
需求分析柱面往往在 CAD 领域用来表示倒角,其识别工作具有具有一定的意义。甲方提的需求对指定的模型生成六面体网格,针对模型局部地区参数的获取是至关重要的。在这个过程中,我们需要识别出柱面和椭球面。
还有一个更主要的原因是椭球识别是四月份写的,当时没记录,然后最近有了柱面的识别需求,再打开当时自己写的源码发现完全看不懂了😭,所以记录很重要。
输入输出
输入:局部可能包含柱面和椭球面的三维离散化网格
输出:柱面和椭球面的参数
识别策略柱面和椭球面是相对比较好识别的,这是因为它们分别在线性代数的二次型中有明确的线性表现,通过旋转和平移可以将其转化为标准形式。根据转换后的二次型表现形式可以判断出是椭球柱面还是平面。
平移量获取椭球面和柱面的识别都需要获取平移量,这个平移量是通过二次型的中心来获取的。对于二次型
$$Ax^2 + By^2 + Cz^2 + 2Dxy + 2Exz + 2Fyz + 2Gx + 2Hy + 2Iz + J = 0$$
其中心为 $(-G,-H,-I)$。将$(-G,-H,-I)$作为平移量代进来的话,二次型就变成了
$$a(x+G)^2 + b ...
最近在调试从 OGG 争取来的 OCCT 工具库,项目很大很多,需要重点关注的是样条方面的数据结构与可视化过程,所以需要对三维模型文件格式有一个比较全面的了解,这里记录一下。
离散型网格文件.obj 格式.obj 格式是一种非常常见的三维模型文件格式,它是一种文本文件,可以用文本编辑器打开查看。.obj 文件由一系列的顶点、法向量、纹理坐标、面片等信息组成,可以用来描述三维模型的几何信息。
以下是一个简单的 .obj 文件的示例,素材来源于 Blender 刚打开初始化的那个长方体:
12345678910111213141516171819202122232425262728293031323334353637383940# Blender 3.6.0# www.blender.orgmtllib untitled.mtlo Cubev 1.000000 1.000000 -1.000000v 1.000000 -1.000000 -1.000000v 1.000000 1.000000 1.000000v 1.000000 -1.000000 1.000000v -1.00000 ...
问题由来众所周知,机械硬盘在 windows 系统上和 macos 系统上往往采用 NTFS 和 APFS 两种格式,如果格式不对则会出现数据完全失效或者只能读不能写的情况。之前尝试过硬盘分区,还有在 Mac 上下载相关拓展,都解决的不太好,尤其是无法实现跨系统传送文件的功能。因此笔者另辟蹊径,成功解决了这个问题。
发动钞能力,加钱买固态😋之前用的是西部数据的机械硬盘,插孔在书包里碰来碰去几乎是断掉了,好在文件都能读出来(里面也没啥之前的文件)。换电脑后基本就没用过了,全程吃灰状态。现在之所以想换个好点的固态主要的原因是照片越来越多,拍一个下午照片都要的话就得传大概 30G 左右的照片,拿着自己电脑给别人挑也挺麻烦,传网盘更是传一次得传到明年😢。其实目前 1T 的电脑存储空间基本是够用的,把一些下好的电影啥的装在硬盘里也能腾个几百G,主打一个以后文件只会多不会少早晚要用掉的心态,最后还是决定入手了
Samsung Portable SSD
这应该是固态硬盘里最知名也最流行的一款了,这也导致哥们大一就想买然后后天毕业典礼了都不降价💢,感觉就像赛博时尚单品,多多少少带点溢价在里面。
...