TiXL CapsuleLineSDF 节点详解:两点连线生成程序化胶囊 SDF 场的原理与实战
TiXL CapsuleLineSDF 节点详解两点连线生成程序化胶囊 SDF 场的原理与实战【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3本篇技术指南聚焦 TiXLt3开源实时动态图形软件中的CapsuleLineSDF场生成算子它以两个三维点定义一条线段围绕线段生成胶囊形状的有符号距离场SDF配合 RaymarchField 可渲染出立体胶囊几何体并可被 BendField、TransformField 等空间变形节点继续加工。读完本文你将掌握 CapsuleLineSDF 的数学内核HLSL 级 fCapsule 距离公式、全部输入参数的行为语义、渲染与可视化接线方式以及如何借助 Gizmo 交互式调整端点。一、节点定位Lib.field.generate.sdf 家族中的两点连线生成器CapsuleLineSDF 属于 TiXL 算子库中的Lib.field.generate.sdf类别见 该目录的索引文档同类算子还包括 SphereSDF、BoxSDF、CylinderSDF、TorusSDF 等。它的定位在原文档中写得很清楚Generates a procedural capsule field by connecting two points. 通过连接两个点生成程序化胶囊场。与多数以中心 尺寸定义形状的 SDF 不同CapsuleLineSDF 的形状由两个端点之间的线段直接定义胶囊是半径为 Thickness 的线段在三维空间中的等距膨胀体。这种定义方式天然适合模拟绳索、管道、骨骼、链条节段、光束、缆线等沿线段延展的形态。在 TiXL 的算子架构中CapsuleLineSDF 的运行时实现位于 CapsuleLineSDF.cs对应的算子符号定义与 UI 布局文件分别为 CapsuleLineSDF.t3 与 CapsuleLineSDF.t3ui。二、SDF 数学内核fCapsule 距离函数CapsuleLineSDF 的核心是一段被注入 Shader 的 HLSL 全局函数。从 CapsuleLineSDF.cs 的GetPreShaderCode方法可以看到它通过CodeAssembleContext.Globals注册了fCapsulefloat fCapsule(float3 p, float3 a, float3 b, float r) { float3 pa p - a; float3 ba b - a; float h clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 ); return length( pa - ba*h ) - r; }这是业界标准的点到线段距离的有符号距离实现其原理分四步建立相对向量pa p - a是采样点到起点 a 的向量ba b - a是线段方向向量投影并钳制h clamp(dot(pa,ba)/dot(ba,ba), 0.0, 1.0)把采样点在线段方向上的投影参数限制在[0,1]区间——这是与点到直线距离的关键区别它保证 h 落在线段两端之内从而形成两端为半球帽的胶囊而非无限延伸的圆柱求最近距离pa - ba*h即采样点到线段上最近点的向量取其长度减去半径最后减去半径 r得到带符号距离外部为正、表面为 0、内部为负——这正是光线步进Raymarching渲染所需的 SDF 语义。注入完成后GetPreShaderCode会为当前节点拼接调用语句f{c}.w fCapsule(p{c} - Center, StartingPoint, EndPoint, Thickness); f{c}.xyz p.w 0.5 ? p{c}.xyz : 1; // save local space这里可以看到两个细节采样点p{c}先减去 Center 参数再做距离计算即 Center 是对整个胶囊的平移变换结果的.w分量存放距离值.xyz保存局部空间坐标供后续着色阶段如法线计算、纹理映射使用。三、输入参数详解原文档定义了四个输入参数结合源码 CapsuleLineSDF.cs 中对应的InputSlot声明完整语义如下参数名类型说明源码依据CenterVector3变换对象的中心即对整个胶囊做整体平移。计算时直接作用于采样点p - CenterInputSlotVector3 CenterStartingPointVector3线段起点 a定义胶囊一端的半球帽中心位置InputSlotVector3 StartingPointEndPointVector3线段终点 b定义胶囊另一端的半球帽中心位置InputSlotVector3 EndPointThicknessSingle胶囊的粗细即 SDF 公式中的半径 r控制胶囊半径/厚度InputSlotfloat Thickness需要特别指出的是Center 与两个端点的分工Center 是整体位移在采样阶段减去而 StartingPoint/EndPoint 决定胶囊在空间中的朝向与长度。改变两个端点的相对位置即可让胶囊旋转、拉伸无需单独的旋转/缩放参数——这是两点定义形态的天然优势。四、输出ShaderGraphNode 与 Shader 图管线CapsuleLineSDF 只有一个输出输出名类型ResultT3.Core.DataTypes.ShaderGraphNode从 CapsuleLineSDF.cs 可见输出槽是一个SlotShaderGraphNode在构造函数中创建ShaderGraphNode(this)并挂载Result.UpdateAction Update使每次求值都会刷新 Shader 节点。ShaderGraphNode是 TiXL 着色器图体系中的核心数据类型定义于 ShaderGraphNode.cs它把多个 SDF 生成器与空间变形器组织成一个可编译的着色器代码片段集合。CapsuleLineSDF 实现IGraphNodeOp接口通过GetPreShaderCode/GetPostShaderCode回调参与着色器代码的拼接与装配。因此Result 输出的不是几何网格而是一段描述距离场的程序化代码——这是 TiXL SDF 管线的关键心智模型。五、渲染与可视化RaymarchField 与 VisualizeFieldDistanceSDF 场本身不可见必须交给渲染/分析节点消费。原文档明确给出了两条用途渲染接入 RaymarchField 节点实现见 RaymarchField.cs通过光线步进把 SDF 渲染为立体几何。该节点会正确初始化深度缓冲使胶囊场可以与网格等常规几何混合合成并提供 Color、AmbientOcclusion、AoDistance、MaxSteps、NormalSamplingD 等质量与观感控制参数可视化调试接入 VisualizeFieldDistance 节点实现见 VisualizeFieldDistance.cs将距离场以颜色/线框形式可视化便于观察胶囊场在空间中的分布、校验 Thickness 与端点位置是否符合预期再切换到 RaymarchField 正式渲染。对于 TiXL 渲染管线的完整入门流程原文档引用了 [HowToRaymarchField] 交互式教程在同目录的 sdf 索引 及 SphereSDF、BoxSDF、CylinderSDF 等兄弟节点的文档中均有引用。六、与空间变形算子组合弯曲、变换与重复CapsuleLineSDF 的输出可以被一系列场空间变换算子继续处理原文档列出的组合方式包括BendField沿指定轴弯曲输入场适合把胶囊变成弧线、环状的柔性形态。其文档提示对较小源体积在有限单位范围内效果最佳因此配合细长胶囊使用时建议控制端点间距TransformField / Translate / RotateAxis对场做平移、旋转等刚体变换可叠加在 Center 之上进一步微调PolarRepeatPolarRepeat/RepeatPolar等重复类算子把单个胶囊复制成环形阵列例如生成均匀分布的辐条、花瓣或链条结构。这类空间变形节点见 field/space 目录同样实现IGraphNodeOp可被串接在 CapsuleLineSDF 与 RaymarchField 之间形成生成 → 变形 → 渲染的完整场处理链。七、Gizmo 交互支持直接在视口拖动端点从源码结构看CapsuleLineSDF 实现了ITransformable接口CapsuleLineSDF.csIInputSlot ITransformable.TranslationInput EndPoint; IInputSlot ITransformable.RotationInput null; IInputSlot ITransformable.ScaleInput null;这意味着一处值得注意的设计该节点把平移 Gizmo 绑定到了 EndPoint 输入——在视口中拖动变换 Gizmo 时改变的将是胶囊终点而非整体位置。同时Update()方法中会先触发TransformCallback?.Invoke(this, context)再刷新 ShaderNode保证 Gizmo 操作能实时传导到 Shader 代码。ITransformable接口定义见 ITransformable.cs。这一交互特性让拉拽端点摆造型成为编辑胶囊姿态的最直观方式。八、相关节点对比与选型建议原文档列出的相似节点为CapsuleSDF另一类胶囊 SDF 生成器一般以中心 方向 长度 半径的参数形式定义适合胶囊姿态由结构化参数驱动的场景而 CapsuleLineSDF 更贴近两个空间点之间拉一条带半径的线的直觉ChainLinkSDF生成链环锁链节形状的场适合在胶囊之上叠加环形细节文档见 ChainLinkSDF.mdFractalSDF生成 MandelBox 分形场文档见 FractalSDF.md属于迭代型复杂场与胶囊这种解析型基础场搭配使用可构造混合形态。选型建议需要沿两点连线的直观定义时选 CapsuleLineSDF需要程序化控制长度/方向的胶囊时选 CapsuleSDF 类节点需要锁链等重复单元时则可用 CapsuleLineSDF或 ChainLinkSDF配合 PolarRepeat 等重复算子组合而成。九、实战接线速查一个最小可运行的典型接线TiXL 节点图中CapsuleLineSDF ├─ StartingPoint ── 例如 (0, -0.5, 0) ├─ EndPoint ── 例如 (0, 0.5, 0) ├─ Thickness ── 例如 0.1 └─ Result ── RaymarchField.SdfField ── DrawCommand ── 渲染输出调试阶段可把 Result 临时改接到 VisualizeFieldDistance 查看距离场分布需要弧线效果时在两者之间插入 BendField将 Amount 逐步增大即可看到胶囊沿轴弯曲。相关参数如 RaymarchField 的 MaxSteps 建议范围 50–150、StepSize 用于抑制噪声等非 Lipschitz 场引入的伪影详见 RaymarchField 参数文档。十、小结CapsuleLineSDF 是 TiXL 场渲染体系中一个小而美的基础算子两点定义形态、fCapsule标准 SDF 公式保证渲染质量、ShaderGraphNode 输出无缝接入 RaymarchField/VisualizeFieldDistance、ITransformable 提供视口 Gizmo 直接拖拽端点并能与 BendField、TransformField、PolarRepeat 等空间变形算子自由组合。理解它的输入语义与代码生成方式也就掌握了 TiXL 所有解析型 SDF 生成器的工作模式可以举一反三地使用同目录下的其余场节点。【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址: https://gitcode.com/GitHub_Trending/t3/t3创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Coze零代码多智能体协作:从任务拆解到稳定运行的全流程实践

Coze零代码多智能体协作:从任务拆解到稳定运行的全流程实践

/* 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 15:05:44 阅读更多 →
Trae里Anaconda解释器,让Codex走TaoToken后能照着defaultInterpreterPath改对

Trae里Anaconda解释器,让Codex走TaoToken后能照着defaultInterpreterPath改对

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

2026/9/20 17:53:57 阅读更多 →
Cursor 跑 MCP,模型通道改到 TaoToken 行不行?

Cursor 跑 MCP,模型通道改到 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/20 17:56:43 阅读更多 →

最新新闻

C#直接加载百度PaddlePaddle模型做印章检测

C#直接加载百度PaddlePaddle模型做印章检测

简介:本资源是一套基于C#与OpenVINO实现百度预训练印章检测模型的完整工程实践方案,面向Windows平台下希望将深度学习模型集成至桌面应用的中高级开发者,解决传统OCR或规则方法难以应对的复杂背景印章定位与识别问题。压缩包含403个文件&…

2026/9/20 21:07:25 阅读更多 →
CC-Switch与Codex CLI联调报错:local proxy failed /responses排查指南

CC-Switch与Codex CLI联调报错:local proxy failed /responses排查指南

如果你也在用 CC-Switch 管理 Codex CLI 的模型配置,大概率对这句话不陌生:local proxy failed while handling codex endpoint /responses。我第一次碰到的时候,第一反应是 CC-Switch 坏了,卸载重装了两遍,问题原封不…

2026/9/20 21:07:25 阅读更多 →
RapidOCR 推理优化实战:3 引擎实测对比与 5 个调参技巧,200 张图从 4 分 12 秒压到 38 秒

RapidOCR 推理优化实战:3 引擎实测对比与 5 个调参技巧,200 张图从 4 分 12 秒压到 38 秒

RapidOCR 推理优化实战:3 引擎实测对比与 5 个调参技巧,200 张图从 4 分 12 秒压到 38 秒 【免费下载链接】RapidOCR 📄 Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT…

2026/9/20 21:07:25 阅读更多 →
BrewUI指南:给Homebrew配个可视化面板,依赖、服务、清理全掌握

BrewUI指南:给Homebrew配个可视化面板,依赖、服务、清理全掌握

如果你在 macOS 上装软件,应该绕不开 Homebrew——大家习惯简称它 brew。大多数人的使用方式是在终端敲命令:brew install git、brew services start mysql,这样很高效。但时间一长你会发现一个问题:你根本不知道自己机器上到底装…

2026/9/20 21:07:25 阅读更多 →
DataHub Role 实体详解:外部数据平台访问权限的建模、写入与查询实战

DataHub Role 实体详解:外部数据平台访问权限的建模、写入与查询实战

DataHub Role 实体详解:外部数据平台访问权限的建模、写入与查询实战 【免费下载链接】datahub The Context Platform for your Data and AI Stack 项目地址: https://gitcode.com/GitHub_Trending/da/datahub 本文围绕 DataHub 元数据模型中的 role 实体&…

2026/9/20 21:07:25 阅读更多 →
SAP IBP供应链计划全面解析:从架构到落地的实战指南

SAP IBP供应链计划全面解析:从架构到落地的实战指南

简介:一套64页的SAP集成业务计划(IBP)解决方案参考PPT,适合SAP顾问、供应链计划人员及企业数字化转型管理者学习使用。内容系统覆盖IBP高阶解决方案架构,包含供应链监控、销售与运营计划、需求管理、库存计划、供应计划…

2026/9/20 21:06:24 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →