Chatgpt 现世仅两个月,已经达到了 1 亿月活跃用户,不但影响了世界范围内的知识工作者,还在各行各业掀起了科技创新的热潮。在信息大爆炸、新科技不断涌出的现阶段,拥有面向未来的科技趋势的重要的洞察力,并由此改变所处行业,为社会带来积极影响。追光几何一直致力于将图纸管理的新概念在机械设计领域内传播,希望能为机械从业者降本提效做出一些贡献。因此,追光几何的各位小伙伴一直在努力探寻新技术,从而为追光几何功能的完善和流畅赋能。接下来,我们简要介绍一下这些技术,欢迎对技术有兴趣的小伙伴一起来讨论!
三维引擎 OpenGL 的介绍分享
技术介绍
OpenGL 作为当前主流的图形API之一,是使用普及度最高的图形软件接口之一,特别是在移动端以及 Web 端。它能够渲染 2D、3D 矢量图形的跨语言、跨平台的应用程序编程接口,专业游戏 DOOM3 和 QUAKE4 等都使用的是它。与大家的工作息息相关的CAD 软件,也用它来绘制从简单的图形比特到复杂的三维景象。对 CAD 软件使用的这一强大的开放图形库有兴趣的小伙伴们,不要错过下面这篇文章。
文章概述
在这篇文章里,我们主要介绍 OpenGL 的运作过程以及其中最有意思的“着色器”这一工具。我们将用画画来类比 OpenGL 中的渲染过程,因为本质上画画和使用显卡渲染图片是一样的,只是操作的对象变了。现代显卡一般会提供给开发者很大的自由去控制显卡的行为,而“着色器(Shader)”就是我们的手段。那么什么是着色器呢?让我们打个比方,如果说我们的显卡是一个汽车组装工厂,显卡的渲染流程是其中一条流水线的话,那么着色器就是工作在这条流水线上的机器人。这其中有两个工位的机器人比较特殊:第一个机器人,以及最后一个机器人。他们叫【顶点着色器】和【片段着色器】。我们一般只需要设置这两个机器人的行为,就可以得到我们想要的结果。顶点着色器是我们的第一个着色器,它需要我们提供数据,即顶点位置、顶点法线、顶点贴图座标等。它会对每一个顶点进行计算,输出一个此顶点变换后座标以及之后着色器需要的输出。而片段着色器则会对每一个三角形(如果是三角形的话)包围区域的所有像素计算他们的颜色。顶点着色器输出的数据只是这些像素中的一小部分, 不过所有顶点着色器的输出都会被插值,经过这样的无中生有以后,我们在每个像素就有足够的数据计算显示的颜色值了。
本文将 OpenGL 渲染类比于画画,同时浅显感性地介绍了一下着色器,希望看完之后能对你继续了解 OpenGL 的渲染过程减少一点理解的难度。
👉查看文章:
三维引擎 OpenGL 的介绍分享
https://zhuanlan.zhihu.com/p/458851532
工程师描绘未来的画笔—— Bezier 贝塞尔曲线
技术介绍
如果你曾惊叹于汽车流线的律动,齿轮啮合的不苟,城市楼宇的恢弘!必然不会怀疑工程学本身强烈溢出的创造力。而贝塞尔曲线,正是工程师描绘未来的画笔,是理性与浪漫的天作之合。
通过少量几个点,使用一套公式,生成一条平滑曲线,贝塞尔曲线被广泛应用于很多图形图像软件中,使得设计师在计算机上就像使用作图工具一样得心应手,很大程度改善了计算机绘图的僵硬方式。如下图 Photoshop 的钢笔工具。
贝塞尔曲线在前端的应用十分广泛,除了常见的css动画,过渡效果,在 svg 和 canvas 的动画中也必不可少。
文章概述
Bezier 曲线的初衷就是用尽可能少的数据表示出复杂的图形。只需要若干控制点的坐标和相应的阶数就可以表示一个复杂的曲线/面了,从而节省了大量的存储空间。但贝塞尔曲线的次数会随着控制点的增加提高,而高次多项式的计算必然会增加计算的成本。这也由此催生了更完美也更复杂的B样条理论的诞生。其中,控制点影响力和节点向量都参差不齐的 B 样条也就是——NURBS
本系列文章对贝塞尔曲线的诞生、性质、应用等进行了详细的介绍,如果你对计算机图形学感兴趣,不妨来看一看。
👉查看文章:
曲线杂谈(一):大话Bezier曲线
https://zhuanlan.zhihu.com/p/471457420
曲线杂谈(二):Bezier曲线的特殊性质
https://zhuanlan.zhihu.com/p/478159627
曲线杂谈(三):青出于蓝的B-Spline和NURBS
https://zhuanlan.zhihu.com/p/500426271
mesh 算法进化之路
算法进化
Mesh 是生成三维模型显示数据的关键算法,是3D模型能正常展现的重要因素。opencascade 作为市面上少数功能较全的开源三维几何内核,成为很多小公司工业软件研发的首选。作为一个重量型工具库,多年来一直在不断演进而愈发庞大,由此带来的性能问题和可用性问题也愈发突出。本文将为您揭秘追光几何是如何克服这些挑战的。
文章概述
step/iges 是分形三维最早支持几个通用 3D 格式。在迭代过程中,我们收集到很多用户的反馈在使用我们的网站查看 step/iges 模型时出现“模型出现破面”“出现多余的结构”“显示速度慢”等问题。于是我们就联系了大连理工大学机械学院的孙亮教授团队,在几个月的时间里,我们一同深入 opencascade 的源码进行攻关,通过阅读源码,我们基本梳理了三维模型 mesh 算法的基本流程。通过其中分析 mesh 算法的继承关系,我们可以看到具体执行的是 Delaunay 算法模块。
随后通过深入拆解分析,我们清楚了影响 mesh 内部顶点排布的过程是 Discreze Face 中的 Delaunay 剖分。参考 edge discrete 中边界采样点,我们寻找合适的参数调整角误差和线性误差优化最后的排布情况并进行批量验证。最后我们通过合理调整内部点线性误差和角度误差参数,可以在保证图形正确渲染的同时,降低加载的面片数量,从而提高渲染的效率。
追光几何前端可复用内容体系简介
实战分享
大型软件开发的过程中涉及大量的衍生应用开发,由于衍生应用是基于核心功能开发的,随着衍生应用的增多,必然会在不同应用间出现相似的内容,如追光几何的文件标注评论、文件列表、图纸预览等内容。
而相似内容的复用问题,不仅会影响研发的开发效率,更会影响用户的一致性体验。因此我们需要一种既能把内容放在一起管理,又能针对某个内容进行独立发包的技术:Monorepo。
追光几何基于在线看图和图纸管理等核心功能,默默地做了一些衍生应用,在越来越多的企业落地,所以我们利用 Monorepo 来建立可复用内容体系。
文章概述
追光几何基于 pnpm workspace(一种 monorepo 技术),在此基础上搭建了统一的内容研发工具链,开发了一系列用于各类场景的基础内容及业务内容,进而优化了研发、测试效率,并提升了交互视觉的一致性。一个页面就是由若干基础组件+业务组件组成的,基础组件和业务组件之间有单向依赖性:业务组件依赖基础组件。这种依赖关系原则,本质是因为基础组件具有更好的可复用性。业务组件则基于基础组件,结合追光几何的特色业务场景,做了深度定制开发。例如分享弹窗,就在云端、审批、知识库多处场景出现,共用同一个业务组件,提升了代码的可维护性,并稳固了一致的交互体验:
通过可复用内容体系,在研发层面大大提升了效率和可维护性,在应用层面也提升了体验一致性和功能稳定性,为追光几何的稳步发展保驾护航。
我们的团队由成员不仅有着丰富的互联网经验(百度、美团),还有着资深的行业经验(航天、华为、机器人)。追光几何是基于持之以恒的技术探索和创造所打造的工业软件新物种,而追光几何技术团队提供了支撑着这个新物种逐步成长的力量。追光几何技术团队在未来仍旧会保持对新兴技术的多方向探索,并分享给关注我们的用户,同时也致力于提升我们的科技洞察力,努力打磨产品,提升产品使用体验。
如果有对以上技术文章感兴趣的小伙伴欢迎关注【追光几何】公众号,一起交流讨论~