SOURCE VIDEO · course08
11月5日教学5.mp4 · 00:39:52
下载本课原视频 MP4 · 83.0 MB ↓ · 全部原片下载
原片:11月5日教学5.mp4。请选择本机对应视频,文件只在浏览器播放,不会上传。
视频来自本机 [本机资料路径]
Rain · falling, collision and splash
补充练习:水滴模型与材质保留老师源工程,以下 Particle Flow、重力和镜头参数由我补齐,不是老师逐值参数。工程通过脚本创建,并在现有 3ds Max 中重新打开、计算与渲染。
Download editable MAX · Simulation checks
Follow the particle
PF Source [Render: Geometry]
↓
Rain_Falling
Birth → Position Icon → Speed → Shape Instance
→ Material Static → Force → Collision Spawn → Delete
↓ spawned particles
Rain_Splash
Force → Scale → Delete → Collision [Stop]Build it in Particle View (6)
- Create a PF Source. Set Emitter Length / Width to 110 and position Z to 100. Use a Render operator in Geometry mode.
- Birth: Emit Start 0, Emit Stop 80, Amount 160. Position Icon places drops across the emitter.
- Speed: 90, Variation 15, Divergence 3°. The initial velocity must point down.
- Shape Instance: pick Sphere001, Scale 16%, Variation 20%, Acquire Mapping enabled. Material Static: pick the original Drop material.
- Create Gravity, Strength 0.25. Its direction must point down; this script-created helper required X Rotation 180°. Add it to the Force operator.
- Create Deflector at Z 5, Width / Length 400, Bounce 0.35, Chaos 0.25. Add it to Collision Spawn.
- Collision Spawn: Offspring 5, Delete Parent enabled, Offspring Speed = Bounce, Inherited Speed 100%, Divergence 65°, Scale Factor 35%, Scale Variation 20%. Wire its output to a new event called Rain_Splash.
- In Rain_Splash, add Force using the same Gravity. Add Scale: Relative First, Sync = Event Duration. Animate X/Y/Z Scale Factor from 100% at frame 0 to 1% at frame 16.
- Delete: By Particle Age, Life Span 18, Variation 3. Add Collision using the same Deflector and Speed = Stop to catch returning droplets.
What each setting does
Amount changes how many drops are born. Speed changes their starting velocity. Gravity changes velocity over time. Bounce controls the response at the water surface. Offspring creates the small splash drops. Scale shrinks them; Delete removes them.
Do not confuse the two time systems: the UI uses frames; several scripting properties use ticks. At 30 fps, this scene uses 160 ticks per frame. A node graph alone does not prove the simulation works: reopen the file, evaluate from frame 0, then check actual particles.
Rendered frames



Complete rain animation · Frame 0–120
121 帧,每帧都在现有 3ds Max 中以 Arnold 渲染。30 fps,640×480,4.03 秒;不是循环动画。
Download animated MAX · Download MP4 · Frame verification
Animated Shape · make the drop itself change
- 在 Sphere001 上添加 Stretch,Axis Z,Amplify 0.2。
- 给 Stretch 加关键帧:Frame 0 = 0;6 = −0.15;12 = 0.25;18 = 0。
- 在 Shape Instance 勾选 Animated Shape,Sync By 选 Particle Age。这样每颗雨滴从出生时开始播放自己的形变,而不是所有雨滴同时变形。
- 这是补充动画值。已读取同一颗粒子 ID 1 的实际网格:高度从 23.91848(Frame 0)变为 21.00159(Frame 6)和 29.18941(Frame 12),证明形变传到了粒子。
Measured particle counts
| Frame | Total | In Rain_Splash |
|---|---|---|
| 0 | 1 | 0 |
| 10 | 20 | 0 |
| 20 | 80 | 50 |
| 30 | 172 | 140 |
| 40 | 220 | 189 |
| 50 | 223 | 192 |
| 60 | 232 | 202 |
| 70 | 231 | 201 |
| 80 | 226 | 195 |
| 90 | 202 | 191 |
| 100 | 146 | 146 |
| 110 | 51 | 51 |
| 120 | 0 | 0 |
完整动画与粒子形变已补齐;考核逐项验收仍待完成。这里的水面是源工程的 Cellular 动画;尚未制作每滴撞击位置对应的独立圆形波纹。
Parameter references: Collision Spawn, Collision.
04版完整动画:雨滴、飞溅与落点水圈
由04_Impact_Ripples_SUPPLEMENT.max输出Frame 0–120,共121帧,30fps,640×480,约4.03秒。逐张检查PNG并完整解码MP4。水圈随碰撞出生,各自扩张并变细;使用Torus补充方案,仍不是老师程序贴图的逐值复刻。

新增:雨滴落点触发局部水圈 · 04版
本版在03版雨滴与飞溅基础上增加原生Particle Flow水圈。新增部分全部为SUPPLEMENT补设;水圈使用Torus几何体,并非老师Gradient Ramp程序贴图的逐值复刻。水面原材质保留。原03版MP4不含这批水圈;下方04版完整动画已重新渲染。

下载04版工程 · 碰撞位置与粒子验证 · 实际粒子网格增长记录
先理解这条接线
Birth → Position Icon → Speed → Force → Collision Spawn → Shape Instance + Material Static + Delete。
前半段复制现有雨滴的出生、位置、速度和重力设置,隐藏这些复制出来的下落粒子;碰撞后只生成一个水圈。原分支继续生成五颗飞溅粒子,因此水圈和飞溅可以共存。
在Particle View里跟做
- 打开04工程,按6。找到Impact_Ripple_PF_SUPPLEMENT、Ripple_Falling_Copy与Ripple_Expanding。回到Frame 0再播放,Frame 15之后可以观察水圈。
- 复制分支沿用原雨滴的Birth、Position Icon、Speed、Force参数及随机种子。此处为Copy,不是自动联动的Instance;以后修改原雨滴参数时,两条分支都要更新,并重新核对落点。
- 下落事件中的Render设为Geometry、Visible = 0,避免出现重复雨滴。水圈事件另设Render:Geometry、Visible = 100。
- Collision Spawn:Deflectors列表选择Water_Deflector;Number of Offsprings = 1、Delete Parent = On、Restart Particle Age = On、Speed Inherited = 0、Speed Variation = 0、Divergence = 0、Scale Factor = 100、Scale Variation = 0。碰撞后产生一个静止中心。
- Shape Instance:选择Impact_Ring_Template_SUPPLEMENT,Animated Shape = On、Fast Shape Evaluation = Off、Sync By = Event Start、Scale = 100、Variation = 0、Acquire Material = Off。每一圈从进入事件时开始自己的形状动画,不会所有水圈一起长大。
- Material Static:选择Impact_Ring_Material_SUPPLEMENT。Arnold材质Base = 0.2、Base Color = RGB [110,185,230]、Specular = 0.3、Specular Roughness = 0.25、Emission = 0.5、Emission Color与Base Color相同。它负责浅蓝颜色和可见亮度。
- Delete:By Particle Age、Life Span = 18 frames、Variation = 0。水圈寿命是18帧;并非时间轴走到18帧就删除所有水圈。
Torus形状动画:变大与变细分开设置
| 模板帧 | Radius 1(cm) | Radius 2(cm) |
|---|---|---|
| 0 | 0.15 | 0.12 |
| 6 | 3 | 0.10 |
| 12 | 6 | 0.05 |
| 18 | 9 | 0.005 |
Radius 1控制环的半径,Radius 2控制管的粗细;Segments = 64、Sides = 8。模板放在场景下方并关闭Renderable,由Shape Instance引用。这里靠变细减弱水圈,没有制作Opacity淡出。
验证结果与边界
重新打开MAX后,逐帧对比两条下落分支,位置误差为0 cm,共生成160个水圈;水圈中心在各自寿命中保持不动。对同一个Particle ID 31读取实际网格:Frame 15到32,外缘半径从约0.27增加至8.49 cm,厚度从0.24降至0.0253 cm。不是只检查模板关键帧。
尚未完成:老师程序贴图水圈的接入与视觉匹配、整项雨滴评分验收。当前水圈很细,需要结合近景或工程播放观察。
另外两个实际渲染时刻


Water drop · model + shader
这一节先把 Sphere 做成尖顶水滴,再用渐变和 Falloff 组合明暗、颜色与透明度。源工程 Test4.max 保存了最终 Editable Poly 水滴和材质,所以可以直接查看真实模型与节点。当前学习工程不是 Particle Flow 降雨、碰撞或溅射作业。
1 · Shape the Sphere
- 创建 Sphere。进入修改面板,用 Edit Poly / Stretch 调整形状。
- 视频约 01:30 出现 Stretch 1.5、Amplify 0、Axis Z,此时形状像两端鼓起的长条。
- 约 01:50 出现 Stretch 4.0、Amplify 0.8,并调整 Gizmo 位置,使一端收尖。Gizmo 的位置也影响形状,不能只复制 Stretch 数字。
- 约 02:30 试了 Taper Amount −1、Curve 0、Primary Z、Effect XY。这里是课堂中途试形,不是最终堆栈证明。
- 后续继续调整并折叠为 Editable Poly。原文件保留最终顶点,未保留完整修改器历史;视频 00:22 可补证起始 Sphere Radius 11.959 cm、Segments 32。学习副本直接保留原网格,不用猜测网格替换它。
2 · Make a grayscale design
先看 Composite #47:两张 Gradient Ramp 做大块明暗,两个 Falloff 分支加入与观察方向相关的细节。此阶段先不要纠结蓝色。
先跟做最初两个节点 · 04:25–08:35
下面是视频早期阶段,不是最终蓝色材质。先在另存的练习副本中看懂两条线,再继续下方 Composite 组合。
- 创建 Arnold Standard Surface,命名 Drop,赋给水滴。04:25 可见该材质节点。
- 加入 Falloff #45。04:35 面板:Front 黑、Side 白,两者 Amount 100;Falloff Type = Perpendicular / Parallel,Falloff Direction = Viewing Direction (Camera Z-Axis),初始 Mix Curve 为直线。连接输出到 Drop 的 opacity;05:35 原片已明确显示这条线。
- 加入 Gradient Ramp #46,连接到 emission_color,不要接到它上方的 emission 数值端口。05:55 已显示两条线。
- 08:15 面板读数:Base = 1.0、Specular = 0.0、Emission = 0.2。这是早期练习状态;保存工程后期为 Base 0、Specular 0、Emission 0.8。
- 08:35 的 #46:Gradient Type = Linear、Interpolation = Linear、Noise Amount = 0;Map Channel 1,U/V Offset 0,U/V Tiling 1,U/V/W Angle 0,Blur 1。此时为黑到白的灰度渐变。
Gradient Ramp #46 → Drop.emission_color Falloff #45 → Drop.opacity
Emission Color 决定发光颜色分布;Emission 控制其强度。Opacity 控制表面保留多少:黑色透明、白色保留。06:35 老师还调整了 Falloff 的 Mix Curve,使输出更偏白;截图仅供该时点形状对照;保存工程的精确控制点见下方SDK参数表。
05:05 黑色 RenderView 画面旁仍有渲染进度窗口,05:35 已显示水面和水滴。仅凭这段黑屏不能断定接线错误或给出某个确定的故障原因。
04:25 · Early shader 原片证据

04:35 · Early shader 原片证据

05:35 · Early shader 原片证据

05:55 · Early shader 原片证据

06:35 · Early shader 原片证据

08:15 · Early shader 原片证据

08:35 · Early shader 原片证据

Falloff Mix Curve:端点与手柄是两件事
补查04:35、06:25、06:35、06:45及07:05:初始曲线是直线;06:25左端点仍在底部,但输出手柄已抬高;06:35之后左端点本身也高于底线。不能只做其中一步。
- 先选择连接Drop.opacity的Falloff #45,展开Mix Curve。确认Front黑、Side白,避免改到后面Composite中的其他Falloff。
- 选择左端控制点,调整向右的手柄,使曲线从左侧较快升高。手柄改变的是端点之间的过渡。
- 再把左端点向上移动。它改变最左端输入对应的输出值:在本例黑白Opacity用法中,低端不再输出纯黑,原先最透明的部分会保留更多表面。
- 保持右端靠近1,对照曲线与渲染。截图未显示端点和手柄的数值,不把凭图估计包装成老师精确参数;源MAX数值现已列在下方精确参数表;它代表保存状态。
此处是早期水滴材质步骤,不代表整套雨滴考核完成。不要把曲线变亮直接解释成Emission提高:这里改变的是Opacity。

源工程中的四条曲线
通过原生CurveClass子动画读取控制点数量,并确认Test4.max源文件哈希未改变。以下只证明点的数量;此前普通MAXScript路径没有读出数值;现已由下方.NET SDK精确参数表补齐坐标和手柄。
| Falloff Map | 控制点数量 | 数值读取状态 |
|---|---|---|
| 贴图 #49 | 3 | 已由下方SDK表补齐 |
| 贴图 #52 | 2 | 已由下方SDK表补齐 |
| 贴图 #54 | 4 | 已由下方SDK表补齐 |
| 贴图 #45 | 2 | 已由下方SDK表补齐 |
不要把#45的两点曲线直接复制给#49或#54;它们保留了不同数量的控制点。原生读取范围与限制
| Layer | Map | Blend Mode | Opacity |
|---|---|---|---|
| 1 | Gradient Ramp #46 | Normal | 100% |
| 2 | Gradient Ramp #48 | Darken | 100% |
| 3 | Falloff #49 (Map 2 = Noise #50) | Screen | 100% |
| 4 | Falloff #52 (Map 2 = Cellular #51) | Normal | 100% |
3 · Add the blue palette and bright part
#46 + #48 + #49 + #52 → Composite #47
↓ Source Map
Gradient Ramp #53
↓ Layer 1
Composite #56 → Drop.Emission Color
↑ Layer 2 / Lighten 100%
Falloff #54 → Color Correction #55#53 用 Mapped Gradient Ramp 把灰度转为蓝色。#54 经 #55 后叠到 #56。它保存了 ArnoldLight002 对象引用,但 Direction = 3 对应 Local Y Axis,不是 Object 模式;不能把这个引用解释为灯光正在控制贴图方向。Autodesk Falloff 参数定义
4 · Connect opacity separately
Falloff #45 → Drop.Opacity
Opacity 白色保留表面,黑色让表面透明,中间值部分透明。它与 Emission Color 是两条连接线。只把所有贴图接到 Emission Color,无法复制原工程的透明效果。
原材质为 Arnold Standard Surface:Base 0、Specular 0、Emission 0.8。蓝色效果主要由发光贴图绘制,不应把它解释成已配置真实玻璃折射。
5 · Learn by isolating one branch
- 另存一份练习档,关闭 Auto Key。
- 暂时断开 Opacity 贴图并把 Opacity 设为白色:观察完整轮廓,再恢复 #45。
- 把 Composite #56 Layer 2 Opacity 暂设 0:看 #55 分支贡献了哪块亮部,再恢复 100。
- 移动观察镜头看 Falloff 如何变化。使用练习副本,保持源工程不动。
Saved native values
以下展开项来自保存工程,保留完整浮点数和原生字段名。色标颜色不是屏幕吸色。Falloff 的 Mix Curve 仍保存在 MAX 内,目前读取报告仅列出 CurveControl 引用,普通读取报告未列出控制点;现已在下方补充SDK精确数值表。
#46 · Gradient_Ramp
| Parameter | Saved value |
|---|---|
| size | 1.0 |
| phase | 0.0 |
| amount | 0.0 |
| Levels | 4.0 |
| Low_Threshold | 0.0 |
| High_Threshold | 1.0 |
| Threshold_Smoothing | 0.0 |
| Gradient_Type | 4 |
| Noise_Type | 0 |
| Source_Map_On | 1 |
| Coordinates | MtlBase:Placement |
| output | MtlBase:Output |
| Gradient_Ramp | ReferenceTarget:JData |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| mapping | 0 |
| mapChannel | 1 |
| mappingType | 0 |
| UVW_Type | 0 |
| U_Mirror | True |
| V_Mirror | False |
| U_Tile | False |
| V_Tile | True |
| showMapOnBack | True |
| Noise_On | False |
| Noise_Animate | False |
| UVTransform | (matrix3 [2,0,0] [0,1,0] [0,0,1] [-0.84,0,0]) |
| realWorldScale | False |
| realWorldHeight | 1.0 |
| realWorldWidth | 0.5 |
| phase | 0.0 |
| U_Offset | 0.17000000178813934 |
| V_Offset | 0.0 |
| U_Tiling | 2.0 |
| V_Tiling | 1.0 |
| U_Angle | 0.0 |
| V_Angle | 0.0 |
| W_Angle | 0.0 |
| Noise_Amount | 1.0 |
| Noise_Size | 1.0 |
| Noise_Levels | 1 |
| Blur_Offset | 0.0 |
Gradient flags
| Flag | Position | Color |
|---|---|---|
| 标志__1 | 0 (endpoint) | [0,0,0] |
| 标志__2 | 100 (endpoint) | [45.9368,45.9368,45.9368] |
| 标志__3 | 50.0 | [22.1598,22.1598,22.1598] |
| 标志__4 | 13.468013763427734 | [72.5353,72.5353,72.5353] |
| 标志__5 | 24.24242401123047 | [9.81055,9.81055,9.81055] |
| 标志__6 | 67.00337219238281 | [40.9131,40.9131,40.9131] |
| 标志__7 | 75.75757598876953 | [255,255,255] |
| 标志__8 | 84.8484878540039 | [15.3081,15.3081,15.3081] |
| 标志__9 | 95.28619384765625 | [5.34254,5.34254,5.34254] |
| 标志__10 | 80.47138214111328 | [255,255,255] |
#48 · Gradient_Ramp
| Parameter | Saved value |
|---|---|
| size | 1.0 |
| phase | 0.0 |
| amount | 0.0 |
| Levels | 4.0 |
| Low_Threshold | 0.0 |
| High_Threshold | 1.0 |
| Threshold_Smoothing | 0.0 |
| Gradient_Type | 4 |
| Noise_Type | 0 |
| Source_Map_On | 1 |
| Coordinates | MtlBase:Placement |
| output | MtlBase:Output |
| Gradient_Ramp | ReferenceTarget:JData |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| mapping | 0 |
| mapChannel | 1 |
| mappingType | 0 |
| UVW_Type | 0 |
| U_Mirror | False |
| V_Mirror | False |
| U_Tile | True |
| V_Tile | True |
| showMapOnBack | True |
| Noise_On | False |
| Noise_Animate | False |
| UVTransform | (matrix3 [0,1,0] [-1,0,0] [0,0,1] [1,0,0]) |
| realWorldScale | False |
| realWorldHeight | 1.0 |
| realWorldWidth | 1.0 |
| phase | 0.0 |
| U_Offset | 0.0 |
| V_Offset | 0.0 |
| U_Tiling | 1.0 |
| V_Tiling | 1.0 |
| U_Angle | 0.0 |
| V_Angle | 0.0 |
| W_Angle | 90.0 |
| Noise_Amount | 1.0 |
| Noise_Size | 1.0 |
| Noise_Levels | 1 |
| Blur_Offset | 0.0 |
Gradient flags
| Flag | Position | Color |
|---|---|---|
| 标志__1 | 0 (endpoint) | [0,0,0] |
| 标志__2 | 100 (endpoint) | [0,0,0] |
| 标志__3 | 76.7676773071289 | [255,255,255] |
| 标志__4 | 45.11784744262695 | [3.43572,3.43572,3.43572] |
| 标志__5 | 89.22559356689453 | [0.0936197,0.0936197,0.0936197] |
#49 · falloff
| Parameter | Saved value |
|---|---|
| color1 | (color 0 0 0) |
| map1Amount | 100.0 |
| map1 | None |
| map1On | True |
| color2 | (color 255 255 255) |
| map2Amount | 100.0 |
| map2 | 贴图 #50:Noise |
| map2On | True |
| type | 1 |
| direction | 0 |
| node | None |
| mtlIOROverride | True |
| ior | 1.600000023841858 |
| extrapolateOn | False |
| nearDistance | 0.0 |
| farDistance | 100.0 |
| Texture_Output | MtlBase:Output |
| MixCurve | ReferenceTarget:CurveControl |
#50 · Noise
| Parameter | Saved value |
|---|---|
| color1 | (color 0 0 0) |
| color2 | (color 255 255 255) |
| map1 | None |
| map2 | None |
| map1Enabled | True |
| map2Enabled | True |
| size | 0.10000000149011612 |
| phase | 0.0 |
| Levels | 3.0 |
| thresholdLow | 0.4000000059604645 |
| thresholdHigh | 0.44999998807907104 |
| type | 0 |
| coords | MtlBase:Placement |
| output | MtlBase:Output |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| offset | [0,0,0] |
| angle | [0,0,0] |
| coordType | 2 |
| mapChannel | 1 |
| Blur_Offset | 0.0 |
| Tiling | [3,0.3,1] |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| offset | [0,0,0] |
| angle | [0,0,0] |
| coordType | 2 |
| mapChannel | 1 |
| Blur_Offset | 0.0 |
| Tiling | [3,0.3,1] |
#51 · Cellular
| Parameter | Saved value |
|---|---|
| cellColor | (color 0 0 0) |
| divColor1 | (color 17.2698 17.2698 17.2698) |
| divColor2 | (color 255 255 255) |
| CellMap | None |
| divMap1 | None |
| divMap2 | None |
| map1Enabled | True |
| map2Enabled | True |
| map3Enabled | True |
| variation | 0.0 |
| size | 6.0 |
| spread | 1.0 |
| lowThresh | 0.0 |
| midThresh | 0.5 |
| highThresh | 1.0 |
| type | 1 |
| fractal | True |
| iteration | 3.0 |
| roughness | 0.0 |
| smooth | 0.10000000149011612 |
| adaptive | True |
| coords | MtlBase:Placement |
| output | MtlBase:Output |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| offset | [2.3,5.4,0] |
| angle | [0,0,0] |
| coordType | 1 |
| mapChannel | 1 |
| Blur_Offset | 0.0 |
| Tiling | [1,1,0.1] |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| offset | [2.3,5.4,0] |
| angle | [0,0,0] |
| coordType | 1 |
| mapChannel | 1 |
| Blur_Offset | 0.0 |
| Tiling | [1,1,0.1] |
#52 · falloff
| Parameter | Saved value |
|---|---|
| color1 | (color 0 0 0) |
| map1Amount | 100.0 |
| map1 | None |
| map1On | True |
| color2 | (color 255 255 255) |
| map2Amount | 100.0 |
| map2 | 贴图 #51:Cellular |
| map2On | True |
| type | 1 |
| direction | 0 |
| node | None |
| mtlIOROverride | True |
| ior | 1.600000023841858 |
| extrapolateOn | False |
| nearDistance | 0.0 |
| farDistance | 100.0 |
| Texture_Output | MtlBase:Output |
| MixCurve | ReferenceTarget:CurveControl |
#53 · Gradient_Ramp
| Parameter | Saved value |
|---|---|
| size | 1.0 |
| phase | 0.0 |
| amount | 0.0 |
| Levels | 4.0 |
| Low_Threshold | 0.0 |
| High_Threshold | 1.0 |
| Threshold_Smoothing | 0.0 |
| Gradient_Type | 5 |
| Noise_Type | 0 |
| Source_Map_On | 1 |
| Coordinates | MtlBase:Placement |
| output | MtlBase:Output |
| Gradient_Ramp | ReferenceTarget:JData |
| Source_Map | 贴图 #47:Composite |
Coordinates
| Parameter | Saved value |
|---|---|
| blur | 1.0 |
| mapping | 0 |
| mapChannel | 1 |
| mappingType | 0 |
| UVW_Type | 0 |
| U_Mirror | False |
| V_Mirror | False |
| U_Tile | True |
| V_Tile | True |
| showMapOnBack | True |
| Noise_On | False |
| Noise_Animate | False |
| UVTransform | (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0]) |
| realWorldScale | False |
| realWorldHeight | 1.0 |
| realWorldWidth | 1.0 |
| phase | 0.0 |
| U_Offset | 0.0 |
| V_Offset | 0.0 |
| U_Tiling | 1.0 |
| V_Tiling | 1.0 |
| U_Angle | 0.0 |
| V_Angle | 0.0 |
| W_Angle | 0.0 |
| Noise_Amount | 1.0 |
| Noise_Size | 1.0 |
| Noise_Levels | 1 |
| Blur_Offset | 0.0 |
Gradient flags
| Flag | Position | Color |
|---|---|---|
| 标志__1 | 0 (endpoint) | [9.44227,46.805,255] |
| 标志__2 | 100 (endpoint) | [255,255,255] |
| 标志__3 | 50.0 | [93.9907,225.211,255] |
| 标志__4 | 12.121212005615234 | [53.7804,119.208,255] |
| 标志__5 | 72.05387115478516 | [252.805,255,255] |
#54 · falloff
| Parameter | Saved value |
|---|---|
| color1 | (color 255 255 255) |
| map1Amount | 100.0 |
| map1 | None |
| map1On | True |
| color2 | (color 0 0 0) |
| map2Amount | 100.0 |
| map2 | None |
| map2On | True |
| type | 1 |
| direction | 3 |
| node | $Arnold_Light:ArnoldLight002 @ [-63.030323,-66.883430,69.022079] |
| mtlIOROverride | True |
| ior | 1.600000023841858 |
| extrapolateOn | False |
| nearDistance | 0.0 |
| farDistance | 100.0 |
| Texture_Output | MtlBase:Output |
| MixCurve | ReferenceTarget:CurveControl |
#55 · Color_Correction
| Parameter | Saved value |
|---|---|
| color | (color 0 0 0) |
| map | 贴图 #54:Falloff |
| rewireMode | 0 |
| RewireR | 0 |
| RewireG | 1 |
| RewireB | 2 |
| RewireA | 3 |
| HueShift | 0.0 |
| saturation | 0.0 |
| tint | (color 0 0 0) |
| tintStrength | 0.0 |
| lightnessMode | 1 |
| contrast | 0.0 |
| Brightness | 0.0 |
| exposureMode | 0 |
| EnableR | False |
| EnableG | False |
| EnableB | False |
| gainRGB | 500.0 |
| gainR | 100.0 |
| gainG | 100.0 |
| gainB | 100.0 |
| gammaRGB | 1.0 |
| gammaR | 1.0 |
| gammaG | 1.0 |
| gammaB | 1.0 |
| pivotRGB | 1.0 |
| pivotR | 1.0 |
| pivotG | 1.0 |
| pivotB | 1.0 |
| liftRGB | 0.0 |
| liftR | 0.0 |
| liftG | 0.0 |
| liftB | 0.0 |
| printerLights | 5.0 |
#56 · CompositeTexturemap
| Parameter | Saved value |
|---|---|
| mapEnabled | #(true, true) |
| maskEnabled | #(true, true) |
| blendMode | #(0, 8) |
| layername | #("", "") |
| dlgOpened | #(true, true) |
| opacity | #(100.0, 100.0) |
| mapList | #(贴图 #53:Gradient Ramp, 贴图 #55:Color Correction) |
| Mask | #(undefined, undefined) |
#45 · falloff
| Parameter | Saved value |
|---|---|
| color1 | (color 0 0 0) |
| map1Amount | 100.0 |
| map1 | None |
| map1On | True |
| color2 | (color 255 255 255) |
| map2Amount | 100.0 |
| map2 | None |
| map2On | True |
| type | 1 |
| direction | 0 |
| node | None |
| mtlIOROverride | True |
| ior | 1.600000023841858 |
| extrapolateOn | False |
| nearDistance | 0.0 |
| farDistance | 100.0 |
| Texture_Output | MtlBase:Output |
| MixCurve | ReferenceTarget:CurveControl |
Editable source-model study
Download MAX · Model and camera readback

使用源模型、材质和场景,补充了观察镜头,在现有 Max 窗口通过脚本渲染。镜头不是老师原相机的精确恢复。水面有贴图动画,水滴模型未读到变换关键帧。
补齐建模起步:Soft Selection
原片 00:45 的堆栈是 Sphere 上添加 Edit Poly,并进入 Vertex 模式。01:00 已看到尖顶水滴、顶部暖色顶点和向下逐渐变冷的选区。这是 Stretch 试形之前的步骤,不能省略成只调 Stretch。
- 在练习副本上给 Sphere 添加 Edit Poly,进入 Vertex,选择顶部要拉动的顶点。
- 展开 Soft Selection,启用 Use Soft Selection。01:00 画面可读:Falloff = 20.0 cm、Pinch = 0.0、Bubble = 0.0,Affect Backfacing 已勾选。
- 向上移动顶部顶点:附近顶点随之移动,越远移动越少。红/橙/黄/蓝显示影响范围,不是材质颜色。这里的拉动距离与精确选择数量尚未核定,不把当前物体坐标当作位移量。
Falloff 决定影响范围;数值相同但球体大小不同,外形也会不同。原片后面还试了 Stretch 和 Taper,它们是后续试形,不能把所有中途设置直接累加成最终堆栈。起始 Sphere 参数已由 00:22 画面补证;已确认约 03:08 变为 Editable Poly,随后在 Element 层级收窄水滴;转换前的 Gizmo 精确偏移仍待核对。
| 原片时点 | 可确认的状态 / 参数 | 用途与限制 |
|---|---|---|
| 00:22 | Sphere: Radius 11.959 cm; Segments 32; Smooth ON; Hemisphere 0; Generate Mapping Coords ON; Real-World Map Size OFF | Radius 控制起始大小;Segments 控制网格细分。这里是起始状态,不代表最终水滴半径。 |
| 00:48 | Edit Poly → Vertex; 顶部顶点选中,面板显示 Vertex 1 | 先选择顶部,再开 Soft Selection。不是选择整圈顶点。 |
| 00:52 | Use Soft Selection ON; Falloff 20.0 cm; Pinch 0; Bubble 0; Affect Backfacing ON | 此时轮廓仍为球形,颜色表示移动影响权重。 |
| 01:00 | 顶部拉起,形成水滴轮廓 | 实际拖动距离待核定。 |
| 01:05 | 画面恢复球形;堆栈仍有 Edit Poly / Sphere | 可确认形状恢复,不能仅凭静帧断定使用了哪个撤销命令。 |
| 02:30 | Taper / Stretch / Edit Poly / Sphere 堆栈;Taper Amount -1, Curve 0, Primary Z, Effect XY | 当时为较宽的梨形,后续仍调整 Gizmo。 |
| 03:00 | Taper 仍为 Amount -1, Curve 0;外形已变成尖顶水滴 | 相同 Amount 不保证相同结果:Gizmo 位置、下层 Stretch 和网格形状也参与计算。 |
03:05–03:25 · Convert to Editable Poly and narrow the drop
- 03:05 原片打开 Convert To 菜单。03:08 后堆栈显示 Editable Poly,原来的 Taper / Stretch 已折叠进顶点。
- 进入 Element 层级并选择水滴,03:15 面板显示选中 512 polygons。红色覆盖表示选中元素,不是材质变红。
- 03:18 用 Scale 收窄横截面,拖动时底栏明确显示 X = 60、Y = 60、Z = 100。这组数值是当次子对象缩放读数:XY 变窄,高度保持。不要在对象层级重复输入同样缩放。
- 03:25 已回到对象层级,Scale 显示 100 / 100 / 100,但水滴仍是细长的。这说明子对象的形状变化与对象 Transform 数值应分别看。
当前保留的源工程读回为 482 vertices、960 triangulated faces;原片显示的 512 polygons 是 Editable Poly 多边形数,与三角面数不是同一统计口径。不能因为两者不同就断言网格缺面。03:18 的 60 是操作中的可读值,尚不宣称已恢复所有拖动及 Gizmo 的最终精确数值。
00:22 · Water drop modeling 原片证据

00:48 · Water drop modeling 原片证据

00:52 · Water drop modeling 原片证据

01:00 · Water drop modeling 原片证据

01:05 · Water drop modeling 原片证据

02:30 · Water drop modeling 原片证据

03:00 · Water drop modeling 原片证据

03:05 · Water drop modeling 原片证据

03:08 · Water drop modeling 原片证据

03:15 · Water drop modeling 原片证据

03:18 · Water drop modeling 原片证据

03:25 · Water drop modeling 原片证据

Source lesson checkpoints
已查看 120 张约 20 秒间隔画面,覆盖这节约 40 分钟视频,并补查开头建模画面;未把抽样检查称为逐帧审阅。下面图片是抽样帧,时间为近似定位。
01:30 · Stretch trial

01:50 · Stretch / Amplify and Gizmo

02:30 · Taper trial

09:10 · Gradient design

12:10 · Composite layers

17:50 · Falloff + Noise

21:10 · Cellular details

26:30 · Blue palette

30:30 · Direction reference light

37:50 · Final color correction branch

Blend mode names: Autodesk CompositeTextureMap reference (4 = Darken, 5 = Multiply).
四条Mix Curve的源工程精确数值
已通过Max自带.NET SDK读取Test4.max四个Falloff的全部控制点、In/Out手柄及101个输入采样。以下是保存工程的状态,不宣称等于视频每个中间阶段。源文件SHA256读取前后相同。
P是控制点坐标;In/Out为相对于P的手柄偏移,手柄位置=P+偏移。下表保留读取浮点值,Flags保留原生整数,不把未解码标志猜成界面选项。
| Map | Point | P [x,y] | In offset | Out offset | Flags |
|---|---|---|---|---|---|
| 贴图 #49 | 1 | [0.0, 0.0] | [0.0, 0.0] | [0.6571959853172302, 0.0] | 259 |
| 贴图 #49 | 2 | [0.71484375, 1.0] | [-0.197265625, 0.0] | [0.029296875, 0.0] | 19 |
| 贴图 #49 | 3 | [1.0, 1.0] | [-0.03395986557006836, 0.0] | [0.0, 0.0] | 259 |
| 贴图 #52 | 1 | [0.0, 0.0] | [0.0, 0.0] | [0.0, 0.0] | 258 |
| 贴图 #52 | 2 | [1.0, 1.0] | [0.0, 0.0] | [0.0, 0.0] | 256 |
| 贴图 #54 | 1 | [0.0, 0.0] | [0.0, 0.0] | [0.0, 0.0] | 258 |
| 贴图 #54 | 2 | [0.01562504470348358, 0.0] | [0.0, 0.0] | [0.0, 0.0] | 2 |
| 贴图 #54 | 3 | [0.03198299929499626, 0.9978359341621399] | [-0.009873319417238235, 0.0021640658378601074] | [0.03918461874127388, -0.008588612079620361] | 17 |
| 贴图 #54 | 4 | [1.0, 1.0] | [0.0, 0.0] | [0.0, 0.0] | 256 |
| 贴图 #45 | 1 | [0.0, 0.40591394901275635] | [0.0, 0.0] | [0.17578125, 0.5940860509872437] | 275 |
| 贴图 #45 | 2 | [1.0, 1.0] | [0.0, 0.0] | [0.0, 0.0] | 256 |
#45左端P=(0,0.40591394901275635),Out=(0.17578125,0.5940860509872437),因此该手柄位置为(0.17578125,1)。左端输出不是0:这条Opacity曲线会保留一部分正面表面。对101个输入点独立计算Bezier,与Max输出最大误差约0.00000144,验证了此曲线的坐标与手柄解释。
这些曲线已保存在源MAX及保留源材质的学习工程中。本次只读取,不重写曲线;完整建模过程、原片阶段变化、雨滴粒子参数与考核仍需继续核对。
雨滴04工程已保留相同曲线
重新打开04_Impact_Ripples_SUPPLEMENT.max,通过SDK再次读取四条曲线,与Test4.max对比:11个控制点的P、In、Out、Flags全部相同;四条曲线各101个输入采样差异均为0。两个MAX文件读取前后哈希不变。
这是源材质曲线保留验证,不等于整套雨滴作业完成。粒子速度、碰撞、寿命和局部水圈仍有补设值,完整模型操作与原片视觉仍需匹配。
原片画面索引





雨滴修正:飞溅粒子的均匀缩小
重新打开原有Rain_Animated_Study.max并从Frame 0顺序计算到120后,发现教学文字与工程不一致:原工程起始X Scale Factor为50,Y/Z为100。实际飞溅粒子的X缩放也约为Y/Z的一半。这是补充练习内部的不一致,不是老师原片参数。
已另存03_Uniform_Splash_Scale.max,三个轴统一从100%缩到1%,保留原工程供对照。重新打开修正版,逐帧计算0–120,并每4帧读取全部飞溅粒子的三个轴缩放,采样均通过一致性检查,最后粒子归零。
在 Particle View 中怎样改
- 按6打开Particle View,找到Rain_Splash事件内的Splash_Shrink(Scale)。
- 保留Type = Relative First、Sync = Event Duration。这里的0–16帧是进入飞溅事件后的时间。
- 取消Constrain Scale,分别明确设置X/Y/Z;这样编辑一个轴不会意外改变另一个轴。三个轴各有相同的关键帧,结果仍是均匀缩小。
- 开启Auto Key,在Frame 0将X/Y/Z Scale Factor都设为100%,Frame 16都设为1%;关闭Auto Key。
- 从时间线开头重新计算,比较同一飞溅粒子的大小。不要只跳到终帧检查节点数值。
| 事件时间 Frame | X % | Y % | Z % |
|---|---|---|---|
| 0 | 100.000 | 100.000 | 100.000 |
| 4 | 84.531 | 84.531 | 84.531 |
| 8 | 50.500 | 50.500 | 50.500 |
| 12 | 16.469 | 16.469 | 16.469 |
| 16 | 1.000 | 1.000 | 1.000 |
| 18 | 1.000 | 1.000 | 1.000 |
表中中间值是保存重开后读取的实际插值,未声称匀速线性缩小。Delete的寿命与Scale的事件时间是不同设置;缩到很小并不等于已经删除。

下载当前修正版MAX · 修正版数据 · 原版问题证据
版本说明:旧版Rain_Animation.mp4保留供历史对照;成果页已切换到03_Uniform_Rain_Animation.mp4,与修正版MAX一致。落点局部水波纹、老师粒子参数和完整评分验收也仍待完成。
