TiXL 中 InvertSDF 运算器详解:翻转有向距离场实现挖空与负空间雕刻

发布时间:2026/9/19 6:03:51

TiXL 中 InvertSDF 运算器详解:翻转有向距离场实现挖空与负空间雕刻 TiXL 中 InvertSDF 运算器详解翻转有向距离场实现挖空与负空间雕刻【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3导读InvertSDF 是 TiXL 开源实时图形系统Lib.field.adjust字段调整库中的基础运算器它通过把有向距离场Signed Distance FieldSDF的距离值取反实现实体与空腔的互换。本指南将以 InvertSDF.md 文档为主体结合仓库源码逐层拆解其工作原理、着色器代码生成细节以及与 CombineSDF 等运算器配合实现布尔挖空CutOut的完整实战链路。InvertSDF 是什么一场关于正负的空间互换TiXL 中的 SDF 字段用带符号的距离值描述空间距离值为负表示该点位于物体内部为正表示位于物体外部零值则落在物体表面。InvertSDF 的核心操作就是把这个符号完全翻转——把内部变外部、外部变内部。原文档给出的例子非常直观A cube in infinite empty space thus becomes a cut-out space in infinite matter.一个悬浮在无限空旷空间中的立方体经 InvertSDF 反转后就变成了无限实体物质中被挖出的一个立方体空洞。也就是说原本实心的立方体被翻转为立方体形状的负空间从而可以用它来雕刻、打孔、掏空其他实体对象。在 Lib.field.adjust 分组中InvertSDF 与 AbsoluteSDF取距离绝对值、PushPullSDF整体加厚/减薄表面、SpatialDisplaceSDF空间扭曲、TranslateUV平移 UV 坐标等同属字段调整工具族专门对 SDF 场的数值或空间属性做后处理变换。节点结构与数据类型根据原文档InvertSDF 仅有一个输出名称类型ResultT3.Core.DataTypes.ShaderGraphNode从源码看该节点实际上包含两个关键槽位InvertSDF.cs输入InputField类型为InputSlotShaderGraphNode接收上游任意 SDF 生成器如 SphereSDF、BoxSDF 等输出的着色器图节点输出Result类型为SlotShaderGraphNode把经过反转处理后的字段继续传递给下游节点如 CombineSDF、RaymarchField 等。整个节点的类型体系非常统一所有Lib.field下的运算器都通过ShaderGraphNode在 CPU 端拼接一段字段描述图最终由RaymarchField或Render2dField等渲染器将其编译为可执行的着色器代码见 RaymarchField.cs 中的SdfField输入。InvertSDF 并不直接参与逐像素的光线步进循环而是作为字段图中的一个纯变换节点存在。底层原理一行着色器代码背后的 SDF 语义InvertSDF 的实质实现极其精简其GetPostShaderCode只生成一行代码InvertSDF.csf{c}.w * -1;理解这行代码需要先弄清 TiXL SDF 字段的数据布局。以 SphereSDF.cs 为例球体生成器的预着色器代码为f{c}.w length(p{c}.xyz - {n}Center) - {n}Radius;可见字段变量f的.w分量专门存放带符号的距离值.xyz则用于携带法线、局部坐标等辅助信息球体把局部空间存入.xyz以便后续处理。因此f{c}.w * -1就是对该采样点的距离值做精确的符号取反原本距离为d 0的外部点反转后变为-d 0即从外部翻转为内部原本距离为d 0的内部点反转后变为-d 0即从内部翻转为外部表面上的d 0点保持不变因此物体表面轮廓的位置不变只是实体与空腔的归属被整体对调。由于 SDF 的距离场天然满足 Lipschitz 连续性逐点取反后依然是一个合法的有向距离场反转后的字段仍然可以放心地交给光线步进Raymarching做等值面求交——这正是 InvertSDF 能与其他字段运算器无缝级联的数学前提。典型案例用 InvertSDF 雕刻负空间基本链球体 → 反转 → 光线步进最小可用链路如下SphereSDF ──Result──▶ InvertSDF ──Result──▶ RaymarchField其中RaymarchField的SdfField输入接收反转后的字段DrawCommand输出用于渲染。渲染结果是从球的表面看场景变成了无限空间中存在一个球形空洞配合MaxSteps、MinDistance、MaxDistance等参数可控制步进精度见 RaymarchField.cs。进阶链反转 并集 挖洞原文档特别提示了 InvertSDF 的黄金搭档CombineSDF。BoxSDF ──Result──▶ InvertSDF ──┐ ├──▶ CombineSDF ──▶ RaymarchField SphereSDF ──Result──────────────┘这样组合的本质是用 CSG 布尔运算雕刻先用 InvertSDF 把某个形状翻转为负空间再通过 CombineSDF 将其与其他实体做并集等效于从后者中挖出前者的形状。有趣的是从 CombineSDF.cs 的源码看CutOut差集模式本身就是用取反实现的f{contextId}.w max(f{contextId}.w, -f{subContextId}.w);也就是说CombineSDF 的差集运算在内部等价于对第二个字段取反后再做交集——InvertSDF 的*.w * -1与 CombineSDF 差集路径中的-f{subContextId}.w完全同源。当你需要显式、独立地把一个字段翻转为负空间再复用时InvertSDF 就是那个可组合的显式算子。CombineSDF 还提供了 Union、Intersect、UnionSmooth、CutOutRound、Engrave、Pipe 等十余种组合模式CombineSDF.cs与 InvertSDF 配合可以构建复杂的雕刻与布尔造型管线。交互式验证SDFToColor 可视化在调试阶段可以把 InvertSDF 的输出接入Lib.field.use分组下的 SDFToColor将距离值映射为颜色梯度进行可视化直观确认反转前后内外区域是否正确对调也可接入VisualizeFieldDistanceVisualizeFieldDistance.cs观察距离场的分布。与同组运算器的对比与协同InvertSDF 经常与Lib.field.adjust中的其他调整器串联使用AbsoluteSDFf{c}.w abs(f{c}.w)AbsoluteSDF.cs把负距离全部归零/取正消除内部概念常用来把空腔转回实体边界与 InvertSDF 联用可对负空间做二次修正。PushPullSDF通过f{c}.w {n}AmountPushPullSDF.cs整体加厚或减薄表面先反转再 Push/Pull可以对挖出的空腔壁做厚度调节。SpatialDisplaceSDF / NoiseDisplaceSDF对距离值或空间坐标施加噪声位移让反转后的空洞边缘产生有机的侵蚀感。这些调整器都遵循同一套IGraphNodeOp接口与ShaderGraphNode数据协议因此可以按任意顺序自由串联构成丰富的字段造型表达式。典型使用场景小结负空间雕刻在无限场中制造空洞、隧道、内腔CSG 差集替代显式反转后与 CombineSDF 配合或直接使用 CombineSDF 的 CutOut 模式双面渲染辅助反转后再用 AbsoluteSDF 还原可得到仅保留空腔内表面的效果材质/颜色翻转与 SetSDFMaterial 配合为反转后的空腔注入独立的颜色提供者。参考与延伸阅读原文档InvertSDF.md同组索引Lib.field.adjust README节点实现InvertSDF.cs、定义文件 InvertSDF.t3组合运算器CombineSDF.cs字段生成示例SphereSDF.cs、BoxSDF.cs渲染端RaymarchField.cs、Render2dField.cs【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/19 5:58:51

LLVM实战指南:从源码构建到Pass开发与IR调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 7:08:54

FIDIC EPC银皮书英文版.doc条款解析与检索

简介:这份资源是FIDIC设计采购施工(EPC)合同条件银皮书的英文原版文档,面向国际工程项目管理人员、合同工程师、造价与法务人员,以及备考FIDIC相关资格考试或从事海外EPC总承包业务的学习者,用于查阅权威合…

2026/9/19 7:08:54

ESP32+MAX30102零基础实现心率检测实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 7:08:54

Java时区处理:痛点解析与专业解决方案

1. 时区处理的痛点与解决方案在Java开发中,处理时区问题就像在雷区跳舞——稍有不慎就会引发各种诡异的时间显示错误。我见过太多项目因为时区处理不当导致跨时区会议系统显示错误时间、国际电商平台订单时间混乱、全球日志系统时间戳无法对齐等问题。Java标准库虽然…

2026/9/19 7:08:54

达梦数据库定时数据迁移:存储过程与DBMS_SCHEDULER实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 7:08:54

钢结构围护企业评估指南与行业趋势分析

1. 项目概述钢结构围护行业作为建筑领域的重要组成部分,近年来在国内市场发展迅猛。作为一名在建筑行业摸爬滚打多年的从业者,我深刻体会到选择一家靠谱的钢结构围护企业对于项目成败的关键影响。这次我将基于多年行业观察和实际项目经验,为大…

2026/9/19 7:03:54

AXI_IIC调试实战:从寄存器映射到FIFO设计的稳定性优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 14:13:01

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/19 0:03:10

验证 OpenSpec 兼容性,Cursor 的 Token 从 TaoToken 出

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:03:10

书桌角落的 Mac mini,OpenClaw 通过 TaoToken 跑任务。

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:03:10

oh-my-hermes:打造跨工具的命令编排与插件化工作流

1. 项目概述与设计初衷1.1 它到底是什么先说结论:oh-my-hermes 是一个面向开发者日常终端操作的效率工具套件,核心定位是“把分散在各类命令行工具里的高频操作,统一收拢成一套插件化、可编排的工作流”。项目灵感来源很明显——oh-my-zsh 重…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码