这些是 “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
),它会自动创建这个属性并赋予随机值。
如果这个属性具有特殊含义(例如 pscale
、Cd
、orient
等),那么 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 / alba | Albedo / BaseColor(基础颜色) | Base Color |
nrm | Normal map(法线) | Normal Map 节点 → Normal |
atos | Ambient 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 分量!