ue4 蓝图设置屏幕百分比_UE4物理精粹Part 2:Physics Assets Tool详解

8f4629e3f3619d292264e0639034ac5d.png

编注:本系列教程基于Katax Emperore与Devin Sherry的《Unreal Engine Physics Essentials》一书整理并补充,同时将相关引擎操作与参数说明从原4.7.6更新到4.22。Part 2包含内容如下:(1)Physics Assets的创建;(2)Physics Assets编辑器详解。本系列适用于UE4初学阶段或美术向的参量功能查询。转载请标明出处。

教程系列目录:

Part 1:数学与物理基础

呆晒晒:UE4物理精粹Part 1:数学与物理基础​zhuanlan.zhihu.com
4d825bec16cc280d3828d361cd3732f4.png

Part 2:Physics Assets Tool(11.11更新)

Part 3:碰撞(11.13更新)

Part 4:约束(11.15更新)

Part 5:物理阻尼与摩擦(11.17更新)

Part 6:实践A:基础载具蓝图实现(11.19更新)

Part 7:实践B:基础破碎效果实现(11.21更新)

本篇教程配套资源:

引擎自带Third Person案例

通过Physics Assets,我们可以学习如何通过游戏世界中存在的物理规律来模拟现实。它是一种动画表现,但比传统动画更具逻辑性。

一、Physics Assets的创建

UE4中,Physics Assets是基于Skeletal Mesh资产的,用于定义其所使用的物理和碰撞。Physics Assets由两部分组成:Physical Body和Constraint,并构成一个独立的Ragdoll个体(除了人型Ragdoll,还包括载具等形式)。其创建方式有三种:

1.1在导入Skeletal Mesh资产时创建

向UE4中导入Skeletal Mesh时,在FBX Import Option中,通过勾选Create Physics Asset可以自动创建对应Physics Asset。但引擎自动创建的Physics Assets在Physics Bodies分布及约束设置等方面表现不尽理想,故除非需要大量创建且精度要求不高,否则不建议直接使用自动生成资产。

0bd96cd3057c1de6786e6b4ec98f5245.png
Fig.1 导入Skeletal Mesh时创建Physics Asset

1.2直接新建资产

通过Content Browser->Add New->Physics->Physics Asset,并指定Skeletal Mesh可创建对应Physics Asset。过程中需要进行创建设置:

f9a08b7fdc6e8486805a33b35ea61728.png
Fig.2 创建Physics Asset的设置
Min Bone Size-仅创建骨骼长度大于该值的Physics Body。 Primitive Type-创建Physics Body时使用的几何体形状。其可选项包括Box、Capsule、Sphere、Tapered Capsule*(4.20引进,仅用于布料,不用在刚体中)、Single Convex Hull(每骨骼生成1个凸包体)和Multi Convex Hull(每骨骼生成多个凸包体)。 Vertex Weighting Type*-将模型顶点近似为Physics Body时,它们对于骨骼的映射方式。其可选项包括Any Weight(任意权重)和Dominant Weight(所主导的权重)。

8943aaebb0e246409143e399164d8528.png
Fig.3 Vertex Weighting Type的设置:左为Dominant Weight,右为Any Weight
Auto Orient to Bone-是否将所创建的Physics Body与其所属骨骼的朝向对齐。 Walk Past Small Bones*-是否直接忽略小骨骼,而非与临近骨骼进行融合。 Create Body for All Bones-强制为每个骨骼都创建Physics Body。 Disable Collisions by Default-默认条件下是否禁用Bodies间的碰撞。 Min Weld Size*-小于该值的Shape会被融合到最高层级Body中 Hull Count-当Primitive Type为Multi Convex Hull时,每个骨骼的最大包体生成数。 Max Hull Verts-当Primitive Type为Single Convex Hull或Multi Convex Hull时,每个包体的最大顶点数。 Create Constrains-是否在临近的Bodies之间创建约束 Angular Constraint Mode-角约束的模式:Free/Limited/Locked。

1.3通过已有的Skeletal Mesh资产创建

右击需要创建Physics Asset的Skeletal Mesh(可多选),在弹出菜单的Skeletal Mesh Actions->Create->Physics Asset->Create中可以创建所需资产,其设置与1.2节一致。

需要注意的是,Skeletal Mesh Actions->Create->Physics Asset->Create and Assign操作会自动将生成的Physics Asset赋予对应的Skeletal Mesh。

二、Physics Assets编辑器详解

编注:Physical Animation Profile及Linear/Angular Motor有关内容详见后续更新。

Physics Assets中有三个主要成分:Shape、Body和Constraint。其主要联系在于,一个或者多个Shape对应一个Body,而Contraint决定了Bodies之间的运动关系。

b8e91a4f3d8aa969a6cc9a71a5c934eb.png
Fig.4 Physics Assets中成分结构极其图标示意

Body Physics Type是物理模拟中的重要属性。分为Default、Kinematic和Simulated三类。该参数可以在Skeleton Tree的Body右键菜单或者细节面板中设置。

Default:跟随父部件的设置。 Kinematic:跟随骨骼的动画数据。 Simulated:跟随物理模拟数据。

1fb6fd1ece6807878256e63cfe369f71.png
Fig.5 Physics Asset编辑器常用界面:A-工具栏,B-骨骼层级图,C-约束关系图表,D-主操作视图,E-细节面板,F-Tools面板

2.1 工具栏

Save-保存当前设置。 Browse-在当前的Content Browse中定位该资源。 Preview Mesh-修改主操作视图中的Mesh。 Preview Animation-选定预览动画。 Reference Pose-清除当前骨骼上所有修改,恢复到默认姿态(此处为APose)。 Create Asset-创建相关资产:除了BlendSpace、AimOffset和常规Anim Assets,此处可以根据物理模拟结果的Pose创建相关Anim Sequence或者Pose Asset。 Enable/Disable Collision-开启/关闭所选Bodies之间的碰撞。 Physical Material-为所有Bodies指定物理材质。 内置约束预设-为当前所选中的约束设置其内置类型:球关节型类约束(全方向自由旋转)、铰链型约束(单方向旋转自由)、固定约束(全方位约束)和骨骼型约束(基本符合生物生理性的常用设置)。

b07b7ccfa71ea432e47d81dd2f1e2fc4.png
Fig.6 内置约束类型图示
Simulate-开启模拟:可选全骨骼模拟、当前选中骨骼模拟和无重力环境模拟。

2.2 骨骼层级图

展示了全部的骨骼层级与对应的Physics Bodies与约束信息。

50f68617c20336516f5e1a46118fd51e.png
Fig.7 Skeleton Tree中的显示控制Options
Filtering Flattens Hierarchy-将层级结构全部展平。 Hide Parents When Filtering-在搜索时是否显示搜索结果的Parents。 Show Bodies-在层级图中显示Bodies。 Show Constraints-在层级图中显示约束。 Show Primitives-在层级图中显示原始Shape(Box、Sphere、Capsule等)。 Show All Bones-在层级图中显示所有骨骼(非当前Mesh的骨骼图标为灰色圆圈)。 Show Mesh Bones-仅显示用于当前Mesh的骨骼。 Show LOD Bones-显示用于LOD展示的骨骼。 Show Weighted Bones-仅显示对顶点有权重影响的骨骼(用于IK控制的骨骼会隐藏)。 Hide Bones-在层级图中隐藏所有骨骼。

7b852fafc7eae13a148130e54e5e6b3b.png
Fig.8 Skeleton Tree中骨骼的右键菜单
Copy Selected Bone Name-复制当前骨骼名称,常用于填写蓝图中交互信息等。 Reset Selected Bone Transforms-重置所选骨骼Transform信息。 Add Preview Asset-给当前骨骼增加预览资产。 Remove All Attached Assets-移除所有骨骼上绑定的预览资产。 Add/Replace Bodies-根据Tools面板中的设置,新增或替换当前骨骼的Bodies。 Add Shapes-新增原始Shape。 Select All Bodies-选择Skeleton Tree中所有Bodies。 Select All Constraints-选择Skeleton Tree中所有约束。 Toggle Selection Type(Ctrl+T)-选择类型的快速切换:如果当前所选为Body,则切换到对应的Constriant,反之亦然。(这个操作在骨骼右键菜单中是无效的。)

766f71c14aad7023b39056ae39515fa7.png
Fig.9 Skeleton Tree中Body右键菜单
Regenerate Bodies-根据Tools面板中的设置重新生成Bodies。 Add Shape-增加Body名下的Shape。 Collision-下分焊接(Weld)操作与设置碰撞操作:焊接操作允许将所选的多个Bodies的Shape移动到最高层级的Body下,故该命令可执行的前提为所选Bodies存在层级关系。设置碰撞关系命令与工具栏中Enable/Disable Collision命令相同。 Constraint-新建Body之间的约束关系,注意只能是父->子单向创建。 Physics Type-设置Body Physics Type或者统一设置子Body的Physics Type。 Physical Material-为该Body指定Physical Material。 Copy/Paste Properties-将Body的属性复制给另一个Body(包括所属Shape等),仅支持同一Physics Asset内的操作。 Delete/Delete All Bodies Below-删除该Body/删除所有子Body ☆Mirror-将当前Body的Shape及其设置镜像到对称Body上。约束轴向需要调整。 Assign/Unassign*-将Body指定到Physical Animation Profile中/从中取消。 ☆Copy Collision From StaticMesh-从StaticMesh文件中导入Collision,用于部分非规则碰撞体的导入。

e1bf1ac5df07b82e419ef720d13a68a5.png
Fig.10 Skeleton Tree中的Constraint右键菜单
Snap-吸附:将Constraint吸附到对应的Skeleton上,同时朝向也会被统一。

bb65718851763946178f47f513d7d23f.gif
Fig.11 不同约束位置左:约束存在偏移,右:约束吸附到对应骨骼后
Reset-重置约束轴。用于约束轴的朝向重置。

7d4cddd3064cd215b2acd6305c416fac.png
Fig.12 重置约束轴:(a)原始朝向 (b)旋转操作后朝向 (c)重置操作后朝向 如果按住Alt键进行旋转操作,则可以直接从(a)变换到(c)
Axes and Limits-约束轴与约束范围设置,可在选中约束的情况下使用快捷键快速设置:数字键1-3分别表示三个轴向在Limited和Locked之间的切换;数字键4表示轮流激活约束轴;字母Q键表示轮流切换约束轴朝向。

53f97bf420a077b1a2d440f27e04ecba.gif
Fig.13 快捷键数字4轮流激活各轴向

555024b1215ea7ffec35c2078a7c7eff.gif
Fig.14 快捷键Q轮流切换约束轴朝向
Convert-设置约束预设:与工具栏中的约束预设相同。 Copy/Paste Properties-将约束的属性赋值给另一个约束(包括轴朝向与约束范围)。 Delete-删除约束。 Assign/Unassign*-将Body指定到Physical Animation Profile中/从中取消。

2.3约束关系图表

约束关系图表直观展示了Physics Asset中Body之间的约束联系。每个节点的右键展示菜单与Skeleton Tree中相同。Body节点的输出引脚可以新建子约束;约束节点按照“子节点:父节点”的格式来显示两个Body之间的从属关系。当设置了Physical Animation Profile时,透明节点表示了未接入任何Profile中的节点。

97bf03c3f453fd2503a1bbeb6a1f1ea1.png
Fig.15 约束关系图表

2.4 细节面板

2.4.1 Body细节面板

Body的细节面板由Physics、Collision和Body Setup三部分组成。

63c4f17967570c5a37d1d2fec33b2e80.png
Fig.16 Body 细节面板中的Physics模块
MassInKg-以千克为单位的Body质量,默认情况下是基于物理材质和Body的体积自动计算的,必要时可以实现覆写。 Linear/Angular Damping-线性/角阻尼率设置,可用于模拟在水体或者泥浆中的运动。注:刚体的线性动量或者角动量的减损程度是由阻尼率(Damping Rate)来控制的。PhysX SDK中定义了线性阻尼与角阻尼两个参量来描述这种变化 [1]。当物体运动时,物体会受到的线性阻尼力
。类似地,物体所受到的阻尼扭矩
Enable Gravity-开启Body的重力影响。 Physics Type-设置Body的物理类型。 Double Sided Geometry-SceneQuery时是否开启双面设置。常用于需要被双面扫描的Plane或者单面的面片(注:PhysX在PxScene中使用Scene Query来检测场景中的碰撞。Query有三种类型: Raycasts(射线检测), sweeps(扫描检测)和overlaps(重叠检测) [2])。 Simple Collision Physical Material-为Body的简单碰撞(即涉及Basic Shape和吐包体的碰撞)应用物理材质,定义了摩擦力与密度等数据。 Start Awake-当Simulate Physics开启时,是否在游戏初始化时就在模拟状态(比如,如果为F,设置为受重力的Cube会一直保持悬浮直到外力来干扰。) Center Of Mass Offset-质心偏移量。 Mass Scale-该Body的质量缩放系数。 Max Angular Velocity-最大角速度。 Sleep Family-定义该Body多长时间停止模拟物理。该参数包括两种预设:Normal和Sensitive。Normal是最常用的设置,但是往往停止得非常突然,有可能在物体圆弧运动或者钟摆运动的最高点错误地停止模拟物理;而Sensitive的睡眠阈值更低,正可以弥补这些情形,比如用于钟摆和台球。 Generate Wake Events-是否在物体开始模拟或者停止模拟时触发Wake/Sleep事件。 Max Depenetration Velocity-最大穿透速度:和其他Mesh存在穿插时,物理引擎会在运行时尝试将其分开,这个速度值就是用户限定的分开时最大速度。

2f3f183f3dfc2373fa847b04c2d54e92.gif
Fig.17 不同Max Depenetration Velocity数值下,两个重合StaticMesh在开启模拟时的表现:左为Max Depenetration Velocity=8000,右为Max Depenetration Velocity=80
Inertia Tensor Scale-惯性张量的缩放系数:对于同一物体,不同的旋转轴具有不同的转动惯量,除非物体关于所有轴都对称。惯性张量则是针对某物体的转动惯量的概括,一般依照质心为参考。数值越大表示围绕该轴越难发生旋转。 Walkable Slope Override-可行走斜坡的参量覆写:包括Walkable Slope Behavior和Walkable Slope Angle两个部分。Walkable Slope Behavior分为Unchanged(忽略Walkable Slope Angle)、Increase(增加可行走坡度阈值)、Decrease(降低可行走坡度阈值)和Unwalkable(不可爬坡)。默认Character Movement Component Walkable Floor Angle为45°。

97e93f942c3a0352e409e8decb0bc4df.png
Fig.18 Walkable Slope示意:左图绿色部分为Increase的可行走部分,右图红色部分为Decrease后的可行走部分。
Custom Sleep Threshold Multiplier-自定义睡眠阈值增益:当Sleep Family=Custom时,会在Natural Sleep Threshold的基础上乘这个增益值,值越大越容易进入休眠。 Stabilization Threshold Multiplier*-稳定性阈值增益:值越大越稳定,但有可能在低速时失去动量。为0时即为稳定性禁用。 Position/Velocity Solver Iteration Count-解算器的迭代数量,数值越高越消耗CPU,但模拟表现更稳定。

7c40c5c750a807efebf04d176077140e.png
Fig.19 Body 细节面板中的 Collision模块
Simulation Generates Hit Events-在物理模拟时,物体被撞击是否触发事件。 Phys Material Override*-物理材质覆写。 Collision Response-该Physics Body是否与外界或其他Bodies产生碰撞反应。

d3978eb4989738e0981ad77fc6a3221d.png
Fig.20 关闭了Collision Response的后轮
Use CCD-是否开启Continuous Collision Detection(连续碰撞检测):开启的话会增加CPU消耗,但能使物理碰撞更加精确。

e487a13954c62394487a5ce145a53889.png
Fig.21 Body 细节面板中的 Body Setup模块
Skip Scale from Animation-是否忽略来自动画中的缩放数据:针对呼吸等微妙的缩放动画,可以开启此项以保持物理碰撞不变。 Primitives*-Body下属所有Base Shape的属性设置:包括坐标、旋转轴、尺寸、名字、是否参与重量计算等。 Bone Name-Body所属的骨骼的名字。 Consider for Bounds*-是否将此Body考虑进Skeletal Mesh的包围盒计算。

2.4.2 Constraint细节面板

545a7f6b5e5d431bae6516acdfb91f30.png
Fig.22 Constraint面板中通用设置
Joint Name-该约束的关节名称。 Constraint Bone 1/2-Child/Parent骨骼。 Disable Collision-是否关闭该约束所涉及的Bodies之间的碰撞。 Enable Projection-在一些极端运动条件下(两个物体的距离或者旋转的误差过大时),PhysX的动力学解算器无法准确计算约束结果。PhysX提供了Kinematic Projection来使其重新对齐(尽管这是违反约束条件的)。这种Projection不属于物理过程,不会保留动量信息,也不会遵循碰撞体的几何形状。除非伪影问题严重影响模拟质量,否则不建议开启 [3]。距离误差和旋转误差默认分别为0.1个单位和10个单位。 Projection Linear/Angular Tolerance*-投影的距离/旋转容限。 Parent Dominates-Constraint中Parent是否受Child的运动影响。

f81dab65f2b9c29d1b404a638457faf2.png
Fig.23 Constraint中Linear Limits模块
X/Y/Z Motion-沿着指定轴的线性约束设置:无约束/受限约束/不可移动。 Limit-受艰距离。随着设置为Limited的轴的增加,受限范围依次从线、圆变化到球体。 Scale Linear Limits*-是否允许缩放线性受限距离:开启时会受到Parent的缩放值影响。 Soft Constraint-是否开启软约束(类弹簧) Stiffness-软约束的硬度值。 Damping-软约束的阻尼系数。 Restitution-恢复系数:在约束关系被破坏时的恢复系数。数值为1时表示以相同速度反弹,0表示立刻停止。仅在至少有一个轴为Limited且软约束关闭时开启。 Contact Distance-关节被分离的极限距离。越大的值越耗性能。仅在至少有一个轴为Limited时开启。 Linear Breakable-是否可用线性力破坏关节。 Linear Break Threshold-破坏距离约束所需的力的阈值。

0367b1e18a7877d1845662689a36c8f4.png
Fig.24 Constraint中Angular Limits模块
Swing 1/ Swing 2/Twist Motion-沿指定轴的旋转约束:无约束/受限旋转/不可旋转。 Swing 1/ Swing 2/Twist Limit-受限约束范围。 Soft Constraint-是否开启软约束(类弹簧) Stiffness-软约束的硬度值。 Damping-软约束的阻尼系数。 Restititution-恢复系数:在约束关系被破坏时的恢复系数。数值为1时表示以相同速度反弹,0表示立刻停止。仅在至少有一个轴为Limited且软约束关闭时开启。 Contact Distance-关节被分离的极限距离。越大的值越耗性能。仅在至少有一个轴为Limited时开启。 Angular Breakable-是否可用角向力破坏关节。 Angular Break Threshold-破坏关节所需扭矩阈值。

2.5 Tools面板

Tools面板与创建Physics Asset面板参数相同,见本章1.2。

af5e98dfd9262f412078ae5b0e289291.png
Fig.25 Tools面板

拓展资料:

Rigid Body Dynamics​documentation.help Joint Basics​docs.nvidia.com
b1bc1a14e65b29af4c6194b62f771e24.png

历史读物:

呆晒晒:Gears of War 4中的高性能动画技术​zhuanlan.zhihu.com
e8493e6728160ba292cdd1bbe034e79e.png

参考

  1. ^Rigid Dynamics-NVIDIA PhysX SDK Guide https://documentation.help/NVIDIA-PhysX-SDK-Guide/RigidDynamics.html
  2. ^Scene Queries-NVIDIA PhysX SDK 3.4.0 Documentation https://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/SceneQueries.html
  3. ^Joint Basics-NVIDIA PhysX SDK 3.4.0 Documentation https://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/Joints.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cesium for Unreal是一款用于Unreal Engine的插件,它提供了在虚拟场景中使用Cesium的功能。要使用Cesium for Unreal插件,首先需要在Cesium官网上创建一个账号并登录,然后在Cesium面板上点击"Allow"来授权访问地形和影像数据\[1\]。登录成功后,UE项目中的Cesium面板将显示"Quick Add Cesium ion Assets",表示插件已成功安装\[1\]。 要在Cesium for Unreal中添加关照,可以在Cesium面板上的"Quick Add Basic Actors"中点击"Cesium SunSky"的加号,然后在光卡中添加关照\[2\]。建议使用Cesium的"Cesium SunSky"来添加关照\[2\]。 要安装Cesium for Unreal插件,可以在插件设置中搜索"Cesium",然后勾选" Cesium for Unreal",然后重启Unreal Engine\[3\]。 总结:Cesium for Unreal是一款用于Unreal Engine的插件,可以通过在Cesium官网上创建账号并登录,然后在Cesium面板上点击"Allow"来授权访问地形和影像数据来使用插件。可以使用"Cesium SunSky"来添加关照,并在插件设置中搜索并安装"Cesium for Unreal"插件\[1\]\[2\]\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [虚幻引擎(UE5)最佳集成CesiumforUE教程(一)](https://blog.csdn.net/oFengtingwano/article/details/126545555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值