DDC Learning Record(2)

article/2025/7/17 3:53:54

这些是 “UV 生成策略”,决定了 Houdini 如何分析模型空间,并分配 UV 坐标。它们只影响 UV 坐标的生成方式,不影响后续贴图的读取行为

face得到的结果是:

每个面都被映射到了整张贴图([0,1]),所以六面完全相同,每个面都显示出完整的同一张贴图 → 看起来像是“贴图六连发”。

如果你想让六个面各走各的,“排成一整张 UV 图”,你该怎么做?

使用:

  • UV Flatten(最推荐)或

  • UV Unwrap(自动展开),
    这类 真正处理 UV 空间“打包”和“展开”的节点

它们会:

  • 找出面之间的 seam;

  • 展开这些面;

  • 然后将每个面映射到整张 UV 图的不同区域(自动避免重叠);

  • 保证贴图覆盖面合理,不失真。

贴图只被映射到了模型的一小块区域,其他区域 UV 坐标超出了 [0, 1] 或堆叠/错乱了。

导出uv的格式贴图

render成png之后,在ps里面新建图层,写新内容,那个参考线就可以直接隐藏了 

uvquickshade,,这里就把写好的uv图快速加载进来

是的,你完全可以这么说,UV Layout 在 UV 流程中是一个几乎“不可缺少的收口接口”,其地位非常高,不仅可以说“是必要的”,甚至可以称它是:

UV 贴图系统的“汇聚器”与“最终布置官”

这是一个在整个贴图流程中最关键的“规范化步骤”,否则你的贴图工程将出现:

  • UV 重叠 → 烘焙失败;

  • UV 越界 → 贴图污染;

  • UV 分布不均 → 分辨率浪费;

  • UV 不对齐 → 后期处理混乱;

📌 所有这一切,UV Layout 都是你最后一道“校对和组织边界”的工具。

UV Texture / UV Flatten / UV Unwrap 是:

把“每一块面”变得合理;

而 UV Layout 是:

把“所有面”整体布局到图像资源空间内。

xxxxxxxxxxxxxxxxx

“既然各个软件排布规则不同,UV图模板也可能不同,那行业共同的 UV 标准是否就能解决这个不一致?”

排布风格和效率因软件而异,不存在“唯一行业标准的 Layout 方式”

UV 标准不能“统一模板图的排布方式”,但它们能确保排布方式不统一时,贴图依然能跨平台兼容且正确显示。

可以用uvtransform手动调整uv图

UVProject creates the UV texture attribute if it does not already exist. The attribute class (Vertices or Points) is determined by the Group Type. It is recommended that UVs be applied to vertices, since this allows fine control on polygonal geometry and the ability to fix seams at the boundary of a texture.

第23集:循环节点专题讲解_哔哩哔哩_bilibili

换不同的方式来显示属性,可以更加直观(如果调大了字体则要下滚看到)

xxxxxxxxxxxx

SOP 级别的 For-Each 循环结构,对几何结构进行“逐元素处理”或“结构级循环”的必备模块

For-Each Number

  • 迭代处理(比如逐层生长、扩散),动态重复某一操作多次;
  • 输入/输出几何不分组,每轮迭代就是“执行一遍流程”。

For-Each Point

  • 每个点上生成物体(比如草、粒子);

  • 点驱动 copy;

  • 点为中心做局部变形;

For-Each Primitive

  • 给每个面贴不同材质;

  • 给每个 Curve 加变形;

  • 每个面上生成独立副本;

For-Each Connected Piece

  • 拆开碎片 → 每个碎片单独旋转/缩放/变形;

  • 对连通体分组操作;

For-Each Named Primitive

  • RBD 碎片处理;

  • Packed Geometry 操作;

  • 每个组独立模拟或布尔;

For-Loop with Feedback

高级结构,带有**“每轮输出传回下一轮”的能力**,形成累积式循环。

“递归式”逻辑,用于时间演进型 SOP 网络

xxxxxxxxxxxxx

按住Alt拖动 复制节点

对齐选中节点也是,,选中之后长按a,拖向整理方向

Visualizer 面板通常分:

  • Point Attribute Visualizer(点属性);

  • Primitive Attribute Visualizer(面属性);

🔧 所以你需要确保:

如果 class 是在 Primitive 上生成的,Visualizers 要添加的是 Primitive Visualizer,而不是 Point Visualizer。

xxxxxxxxxxx

矢量转三个float

三个float凑回vector

熟悉常用的,math并不多样,常用的都比较熟悉 

power是某个数的n次方变化

up说这个很常用complement

bind,和bind export,在内部引用外部的属性

引用外部节点转换形式,可以点按回去查看

xxxxxxxx

第二种导入方法

“Promote Parameter”

Houdini VOP(如 Attribute VOP 或 Material VOP)中一个非常关键的功能,让某个节点中的参数“提升”为 VOP 网络的外部接口参数,使用户在 VOP 外部也能修改它。

某个参数(如 addconst1 节点的 val 输入)是内部控制的,只能点进去手动修改,或者写死;

现在通过 Promote,它会变成这个 VOP 节点的一个 上层参数接口,你可以在 Attribute VOP 外部面板直接调节它。

不同的noise用起来差别很大吗

的确是很高级的区域了,在于模拟显示中的不规律,找到最合适的数学公式套上去

xxxxxxxxx

上面的参数试一试就知道了,frequency--出现次数

amplitude----强度

rough粗糙,attenuation对比,,turbulence精细

flow noise 提取到外面去,可以调动噪声图,产生动态感

也有无flow可动态的aanoise版本

xxxxxxxx

Attribute Randomize 节点如果你填入一个不存在的属性(比如 pscale),它会自动创建这个属性并赋予随机值。
如果这个属性具有特殊含义(例如 pscaleCdorient 等),那么 Houdini 在下游处理时也会自动将它用于对应的功能

属性名含义影响节点
pscale点的缩放值(float)Copy to Points, Instance, Pack 会自动按它缩放
Cd点颜色(vector)Viewport 渲染会直接显示该颜色
orient实例的朝向(四元数)控制 Copy to Points 的方向
v速度用于粒子运动、模拟系统
N法线方向用于朝向、光照、实例化方向

👉 所以当你用 Attribute Randomize 随机生成这些属性时,后续节点就会“自动感知”它们的值,并用它们参与计算或显示即使你没显式调用

xxxxxxx

原来的最大最小值,映射fit到destination最大最小值

bind如果有默认值会改默认的,没有则是新创建一个属性

xx

可以自己调整映射fit的曲线

这里的参数在外面调

在这种变化的曲线设置上,再设置里面的参数范围---clamp

第28集:VOP模块-测量_哔哩哔哩_bilibili

c插上两个关键帧,然后计算出两个cube的移动速度

----

还有min节点,compare节点,(输出bool)

if-endif段

真的话输出input1,假的话输出input2

xxxxxx

原turbnoise

complement反转之后

xxxmix节点

bias为0,完全为input1,为1完全为input2

输出的是vector也可以,噪声图是float

xxx

vex是效率提升的事,正常的效果能做,也许慢一点

wrangle节点就是写代码相关的节点

也可以简写

v代替vector,s代替string,都可以

检查之后可以发现(删去两个简写)

xxx

变量就去掉@

进组的写法

设置颜色

设置ramp

  • 所以你对每个点用不同 @ptnum,得到的 f@a 是每个点不同但稳定的随机数

  • 每个点的 @ptnum 是唯一的;再次执行,它们仍然是那一套数,不会“变化”。

houdini表达式是直接写在值的定义里面的

xxx 

houdini表达式

vex式,注意Time的t是大写

xxxxxx

实际上是attribute point 节点设置了brush的绘画选中point

Subtract 节点(或 VOP 中的 Subtract 运算)

result = input1 - input2 - input3 - input4 - ...

xxxx

使用 Mixamo, Rokoko, ActorCore, Motion Capture 数据(BVH、FBX)

骨骼:添加 Armature(含完整人形结构) 

绑定:自动权重绑定/手动 weight paint 

Cloth Modifier + Pin Group,头发 Hair Particles(或新版 Geometry Nodes hair system)

用来给角色添加动作(如跳舞、跑步、打斗)的现成 动作库 + 骨骼动画数据,主要格式是 .fbx.bvh,能直接用于 Blender 或游戏引擎中。

Mixamo

下载 .fbx,导入 Blender → 用作动画数据

Rokoko Studio / Rokoko Motion Library 

モーションキャプチャデータを記録、ストリーミング、編集するための無料の3Dアニメーションソフトウェア

动作质量比 Mixamo 更高(真实 mocap);

  • 有免费和付费动作;

  • 提供 Blender 插件 → 可一键导入动画。

ActorCore(由 Reallusion 出品)

https://actorcore.reallusion.com/3d-motion

Motion Capture 数据文件:.bvh.fbx

🔸 .bvh (Biovision Hierarchy)

  • 最早期的 mocap 数据格式;

  • 包含骨骼层级结构 + 每帧的姿势角度

  • 很多旧 mocap 系统使用 .bvh

  • 在 Blender 中直接支持导入。

🔸 .fbx (Filmbox)

  • 更现代、更常见的格式;

  • 支持骨骼动画、mesh、材质、摄像机等多种内容;

  • 是 Mixamo / Rokoko 等平台的主流输出格式;

  • Blender 原生支持 .fbx 导入动画。

Blender 中如何使用这些动作?核心流程叫做 Retargeting(动作重定向):

  • 你有一个人物模型(带骨骼);

  • 你导入 Mixamo / Rokoko / ActorCore 的 .fbx

  • 使用 Retarget 插件或 Animation Data Transfer,把动作从动画文件映射到你的模型;

  • 最终你的角色就跳舞了。

骨骼数据是可以存在 .fbx 文件中的。

但 ❗每个 DCC 软件(如 Blender、Maya、3ds Max)都有自己独特的骨骼结构定义和控制逻辑,所以要实现互通通常需要“Retarget(动作重定向)”来做转换匹配。

各 DCC 软件对 FBX 的“骨骼显示方式”不同

虽然 FBX 内部储存的是:

  • 每个骨骼的坐标、父子结构、旋转轴、命名等数据,

  • 这些都是“标准化的”数据,

但每个软件解析/显示 FBX 的方式不同

软件骨骼可视化行为
Blender会加上 Armature 对象包裹骨骼,并使用自定义 bone roll(朝向)显示方式
Maya使用 HumanIK / Joint chain,显示姿态会自动对齐 Z 轴前方向
Unity将骨骼变换当作普通 Transform 读取,不显示骨骼形状,只靠名字与结构绑定
Unreal默认采用 UE4 Mannequin 风格,自动剔除无用的骨骼层级

🧠 所以你看到的“骨骼位置偏移、姿态不一样”本质上是:

每个软件对骨骼矩阵解释方式(BindPose / Local Transform)的不同实现

某些骨骼会被“隐藏”或“忽略”

部分 FBX 文件中会有一些特殊用途骨骼,如:

  • 控制器骨骼(用于 rig 控制,不参与变形)

  • 附加 helper 骨骼(如 weapon socket、eye aim)

  • dummy null(空骨架、辅助点)

不同软件可能会:

软件对于不识别的骨骼
Blender显示为 Bone,但不绑定
Unity不导入这些骨骼
Maya可显示,但无 deform 标签

所以你可能看到“导入后丢了一些骨骼”、“对不上”——那不是 FBX 没有,是软件不加载或不支持这些骨骼的控制信息

如果你要最大程度跨软件兼容,推荐做法:

操作建议
骨骼命名使用 Mixamo / UE5 Human / HumanIK 标准命名
骨骼方向统一 Z-forward / Y-up 结构
骨骼控制器分离不要将 deform bone 和 rig controller 混在一起
动作来源尽量统一来源(如都用 Mixamo 动作、或都用 Rokoko)
导出格式使用 .fbx,启用“Bake Animation”并保持骨架整洁

Blender 支持 FBX 导入,,Blender 是 Z 轴向上,,FBX 文件多是 Y 轴向上(如 Maya、Mixamo、Unreal),,,,骨骼方向(roll)在 Blender 中有特殊意义,,即使 FBX 中包含动画,导入后角色也不会立即动起来,,,你需要手动将导入的 Action 绑定到 Armature → Timeline 上

.tga 文件就是模型对应的贴图材质文件(如颜色、法线、粗糙度、透明等)。
但 Blender 不会自动识别文件夹里松散的贴图,你需要手动或半自动将它们绑定到材质中

贴图名是标准命名惯例,我们来逐个翻译关键后缀

后缀解释对应材质插槽(BSDF 节点)
albm / albaAlbedo / BaseColor(基础颜色)Base Color
nrmNormal map(法线)Normal Map 节点 → Normal
atosAmbient Occlusion + Roughness + Metallic packed in RGB通常需要拆出 R/G/B 分别连接:AO / Roughness / Metallic
trans_alba透明贴图(或半透明区域)Alpha / Mask (透明度)
detail_nrmr细节法线(叠加 normal)Normal Map(叠加)
eye_albm, eyebrow_albm局部贴图仅对 eye / eyebrow 材质使用
teeth_albm牙齿单独材质槽
head_cmX / wmX多分区面部贴图(通常用于多LOD或动态换脸)可选挂载方式(不重要时跳过)

xxxx

按g进入移动状态

再按xyz分别沿着对应轴移动

shift+a创建新物体

f进入缩放状态

r进入旋转状态(默认当前视图的方向为旋转轴)

小键盘数字可以精细的调整视图,观察模型(也可以波浪号提出菜单)

按住alt,鼠标中键去旋转也是可以的

点小数点就移动到当前视图为中心

shift +d 移动并复制

最大化视图

游标确定模型位置

xxxx

按tab进入物体编辑模式

选择状态下,ctrl可以找出最短路径,选择两个点

【建模篇】2.2 十大建模操作_哔哩哔哩_bilibili

xxx

blender 同样有相关的“修改器”,达到houdini里的非破坏性建模

晶格修改器,绑定到正方体上形变不规则物体

在应用修改器之后,使用简易形变操纵弯曲效果

老师说的这个问题

4.2.3并没有出现,应该是修好了 

xxx

nurb通过控制杆来操控整条曲线,贝塞尔通过控制点

xxxx

曲线里倒角 选择其他物体

头发丝一些就是这样做出来的

前提是必须是曲线,而不是网格

xxxxxxxx

Vertex Animation Texture (VAT)

Vertex animation is an animation technique where the positions (and sometimes normals) of individual vertices in a 3D model are directly modified over time to create movement or deformation — without using bones or rigging.

Unlike skeletal animation, which moves bones and lets the mesh follow, vertex animation manipulates the mesh geometry directly — frame by frame or procedurally.

Each vertex has its own animated position, either driven by precomputed data or real-time functions.

  • The animation is baked into a texture: each pixel encodes the vertex position at a certain time.

  • In the GPU shader, the model reads from this texture every frame to update vertex positions.

典型的 VAT(Vertex Animation Texture),它是将顶点动画信息编码进贴图里的一种技术手段,用于在 GPU 上高效播放复杂动画,比如破碎、流体、布料等。

❓VAT 是固定的吗?

是的。VAT 是离线烘焙的结果,动画帧数是

“提前在 Houdini 等 DCC 工具中模拟好的帧数”
在 Unity 中只是在 Shader 中按照时间“回放”。

所以——

  • 如果你生成了 30 帧的 VAT 动画 → Unity 中就只能“播放这 30 帧”,不能实时变化;

  • VAT 不具备实时交互性,它像是动画录像带,内容提前录好了。

网上说的“触手贴合地形”是怎么回事?

那不是烘焙型 VAT,而是**“程序化顶点动画”**(Procedural Vertex Animation)

也就是——

在 Shader 中 根据实时的外部数据(地形法线、碰撞高度、距离等)动态计算每个顶点的新位置,而不是从贴图中读取固定帧。

这类动画的关键特征是:

  • 顶点运动实时生成,不依赖预设贴图

  • 可以响应玩家、环境、物体碰撞等实时事件

  • 完全由 Shader 或 CPU 模拟逻辑控制(例如曲线、生长、弯曲、延展)

所有这些坐标都是“Blender 根据当前模型/空间生成的”,但每个坐标的生成逻辑不同

  • UV 是你手动展开出来的。

  • Object、Generated 是 Blender 内部计算的。

  • Normal、Camera、Reflection 等更多跟空间和视角有关。

UV 信息会保存在模型的 .blend 文件中(也会导出到 .fbx.obj.glb 等文件格式中)

生成坐标更像是临时贴图UV 才是正式贴图标准

第一次建模用生成” → ✔ 适合快速实验模型还没 UV 展开

后面正式用图或导出” → ✔ 推荐使用 UV

“映射节点的矢量插槽接收一个三维坐标输入,表示模型表面上的某点。它对这个点进行坐标变换(位移、旋转、缩放),再将变换后的坐标用于贴图采样,从而控制纹理如何投影在模型上。”

传出的依然是三维坐标点的信息,还不是在uv二维图上的对应坐标

图像纹理节点输出的是 颜色值,也就是一个 RGB 三通道向量。

当你把 RGB 接到「系数」插槽(scalar 插槽)时,Blender 会自动转换它为单个浮点数。

这个转换规则是:

Blender 会将 RGB 值 转换为亮度(Luminance)值,而不是只取 R 分量!


http://www.hkcw.cn/article/qZIWvOFJrb.shtml

相关文章

MySQL数据库从0到1

目录 数据库概述 基本命令 查询命令 函数 表的操作 增删改数据和表结构 约束 事务 索引 视图 触发器 存储过程和函数 三范式 数据库概述 SQL语句的分类: DQL:查询语句,凡是select语句都是DQL。 DML:insert,delete,up…

STM32CubeDAC及DMA配置

STM32CubeDAC及DMA配置 一,问题1二,解决11,宏观思路CubeMX配置2,HAL_TIM_Base_Start(&htim6) 的作用1,作用1:使能TIM6的时钟并让它开始计数2,作用2:当 TIM6 溢出时,会…

c++ 赋值函数和拷贝构造函数的调用时机

测试代码&#xff1a; void testcopyAndFuzhi() {class Dog {private:string name;public:Dog(string myname) : name(myname) {}Dog(Dog& otherDog) {std::cout << "调用拷贝构造函数." << endl;this->name otherDog.name;}Dog& operator …

Python列表、字典、元组、集合

列表 list 基本格式&#xff1a;列表名 [元素1,元素2,元素3] 所有元素放在[ ]之中&#xff0c;元素之间用逗号","隔开&#xff0c;元素可以是不同的类型 列表的类型也是列表 li [1,"hello",2] print(type(li)) 列表是可迭代对象&#xff0c;可以用fo…

sctpscan:用于发现 SCTP 网络扫描器!全参数详细教程!Kali Linux教程!

简介 用于发现和安全的 SCTP 网络扫描器 sctpscan 是一款 SCTP 协议端口扫描工具&#xff0c;主要用于识别目标主机上开放的 SCTP&#xff08;Stream Control Transmission Protocol&#xff09;服务端口。 sctpscan 的主要功能是&#xff1a; 探测目标主机 SCTP 协议是否开…

力扣题解654:最大二叉树

一、题目内容 题目要求根据一个不重复的整数数组 nums 构建最大二叉树。最大二叉树的构建规则如下&#xff1a; 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。返回由 nums 构…

车载诊断架构 --- DTC消抖参数(Trip Counter DTCConfirmLimit )

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

75.解决当编辑完用户消息,确认重新生成AI回答时,已有的AI回答还是存在,并且新生成的回答并没有显示到气泡里bug

在上一个bug解决完后&#xff0c;又出来一个bug&#xff0c;我真是服了哈哈哈 新的bug是&#xff1a; 当编辑完用户消息&#xff0c;确认重新生成AI回答时&#xff0c;已有的AI回答还是存在&#xff0c;并且新生成的回答并没有显示到气泡里 出现这个bug的原因还是出现在rege…

C# 用户控件(User Control)详解:创建、使用与最佳实践

在C#应用程序开发中&#xff0c;用户控件&#xff08;User Control&#xff09;是一种强大的工具&#xff0c;它允许开发者将多个标准控件组合成一个可复用的自定义组件。无论是Windows Forms还是WPF&#xff0c;用户控件都能显著提高UI开发的效率&#xff0c;减少重复代码&…

SpringBoot-配置Spring MVC

一、Spring MVC回顾 Spring MVC是一种常用的Java Web框架&#xff0c;它提供了一种基于MVC模式的开发方式&#xff0c;可以方便地实现Web应用程序。在Spring MVC中&#xff0c;WebMvcConfigurer是一种常用的配置方式&#xff0c;可以允许我们自定义Spring MVC的行为&#xff0c…

Python训练营打卡 Day26

知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 ——————————————————————…

【Delphi】接收windows文件夹中文件拖拽

本文根据EmailX45的视频文件&#xff0c;进行了优化改进&#xff0c;原文参见&#xff1a;Delphi: Drag and Drop Files from Explorer into TPanel / TMemo - YouTube 在Windows中&#xff0c;如果将选择的文件拖动到Delphi程序的控件上&#xff0c;有很多实现方法&#xff0c…

电脑的ip地址会自动变怎么办?原因解析和解决方法

在当今互联网时代&#xff0c;IP地址是每台联网设备的"身份证"&#xff0c;但很多用户都遇到过IP地址自动变化的情况。这种现象既可能发生在内网&#xff08;局域网&#xff09;环境中&#xff0c;也可能出现在外网&#xff08;公网&#xff09;连接中。要理解IP地址…

CppCon 2014 学习: C++11 in the Wild

介绍了三个现代 C 的实用工具或功能。下面是对每部分的解释和总结&#xff1a; 1. Auto() 宏 用途&#xff1a;在作用域结束时自动执行清理代码&#xff0c;类似于 RAII 的机制。功能&#xff1a;你可以定义一段代码&#xff0c;在作用域结束时自动执行&#xff08;不需要手动…

三大模块曝光:分钟级搭建专属平台,解锁算力灵活操控新体验,重新定义智能开发效率天花板

一. 蓝耘元生代 MaaS介绍及简单使用 背景介绍 创新产品定位&#xff1a; 蓝耘元生代 MaaS 平台于 2024 年 11 月 28 日推出&#xff0c;非传统智算平台&#xff0c;以资源聚合能力整合上下游资源&#xff0c;为用户提供优质全面服务。 核心模块功能&#xff1a; 集成智算算…

乾坤qiankun的使用

vue2 为主应用 react 为子应用 在项目中安装乾坤 yarn add qiankun # 或者 npm i qiankun -Svue主应用 在main.js中新增 &#xff08;需要注意的是路由模型为history模式&#xff09; registerMicroApps([{name: reactApp,entry: //localhost:3011,container: #container,/…

FreeRTOS实时操作系统学习笔记

一 RTOS入门 1.1 裸机与RTOS介绍&#xff08;了解&#xff09; 裸机编程是指在嵌入式系统中&#xff0c;直接在硬件上运行代码&#xff0c;没有操作系统的支持。这种方式下&#xff0c;开发者需要完全掌握硬件资源&#xff0c;包括时钟、中断、外设等。任务调度和资源管理都由…

MCP还是A2A?AI未来技术选型深度对比分析报告

引言 MCP&#xff08;Multi-Core Processor&#xff09;与A2A&#xff08;Asynchronous to Asynchronous&#xff09;分别代表了计算架构发展中的两种重要范式。前者延续传统冯诺依曼体系的并行优化路径&#xff0c;后者则试图突破同步时钟的物理限制。理解二者的本质差异&…

逐步检索增强推理的跨知识库路由学习

摘要 多模态检索增强生成&#xff08;MRAG&#xff09;在多模态大语言模型&#xff08;MLLM&#xff09;中通过在生成过程中结合外部知识来减轻幻觉的发生&#xff0c;已经显示出了良好的前景。现有的MRAG方法通常采用静态检索流水线&#xff0c;该流水线从多个知识库&#xff…

OpenRouter使用指南

OpenRouter 是一个专注于大模型&#xff08;LLM&#xff09;API 聚合和路由的服务平台&#xff0c;旨在帮助开发者便捷地访问多种主流大语言模型&#xff08;如 GPT-4、Claude、Llama 等&#xff09;&#xff0c;并提供统一的接口、成本优化和智能路由功能。以下是它的核心功能…