Quellcode durchsuchen

添加物理检测设置

usuiforhe vor 4 Jahren
Ursprung
Commit
c0994fb8f3
11 geänderte Dateien mit 115 neuen und 12 gelöschten Zeilen
  1. BIN
      img/UE_Asset65.png
  2. BIN
      img/UE_Asset66.png
  3. BIN
      img/UE_Asset67.png
  4. BIN
      img/UE_Asset68.png
  5. BIN
      img/UE_Asset69.png
  6. BIN
      img/UE_Asset70.png
  7. BIN
      img/UE_Asset71.png
  8. BIN
      img/UE_Asset72.png
  9. BIN
      img/UE_Asset73.png
  10. BIN
      img/UE_Asset74.png
  11. 115 12
      虚幻.md

BIN
img/UE_Asset65.png


BIN
img/UE_Asset66.png


BIN
img/UE_Asset67.png


BIN
img/UE_Asset68.png


BIN
img/UE_Asset69.png


BIN
img/UE_Asset70.png


BIN
img/UE_Asset71.png


BIN
img/UE_Asset72.png


BIN
img/UE_Asset73.png


BIN
img/UE_Asset74.png


+ 115 - 12
虚幻.md

@@ -1,7 +1,7 @@
 <!--
  * @Author: lc
  * @Date: 2021-09-03 21:41:18
- * @LastEditTime: 2021-09-14 11:22:02
+ * @LastEditTime: 2021-09-14 14:36:08
  * @LastEditors: Please set LastEditors
  * @Description: 虚幻学习
  * @FilePath: D:\Projects\markdown\虚幻.md
@@ -761,6 +761,8 @@ With Tag 通过给定的标签将场景中与之匹配的对象进行查找,
 > 打开网格编辑器,查看复杂碰撞和简单碰撞  
 > 可以看到绿色的框就是物体的相似接近于桌子的形态,这就是虚幻的K-DOP包裹  
 
+#### 添加简单碰撞
+
 ![添加简答碰撞](img/UE_Asset63.png)
 
 > 添加简单碰撞  
@@ -770,6 +772,13 @@ With Tag 通过给定的标签将场景中与之匹配的对象进行查找,
 虚幻提供三种简单的形状碰撞器:球体、胶囊体、盒体  
 虚化允许一个物体具备多个碰撞器  
 
+**使用简单的形状制作成复杂的物理碰撞**,是常用的设置物体物理碰撞的方法,因为简单的物理碰撞计算效率最高  
+
+![设置凸包精细度](gif/UE_Asset5.gif)
+
+> 从GIF中可以看到,如何删除物体的碰撞体积,如何使用简单的形状(球盒胶囊)制作物体的碰撞体积  
+> **一个模型可以存在多个碰撞框**  
+
 ----
 
 - **添加K-DOP简单凸包碰撞**
@@ -780,6 +789,11 @@ K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polyt
 - 18 - 樊哙中所有边均形成斜角
 - 26 - 方块中所有边和角均形成斜角
 
+
+大概的思想应该是:在物体外围包一个球,然后尽量把球往里面捏,向物体的内轮廓靠拢  
+
+![设置凸包精细度](gif/UE_Asset6.gif)
+
 ----
 
 - **添加自动凸包碰撞**
@@ -791,25 +805,114 @@ K-DOP是包围体的一种,是K离散导向多面体(K discrete oriented polyt
 
 > 基于物体的形体轮廓(mesh三角面)进行计算
 
+
+![使用凸包](img/UE_Asset65.png)
+
+> 使用凸包
+
 ![设置凸包精细度](img/UE_Asset64.png)
 
-----
+> 设置凸包精细度
 
-- **添加简单的形状碰撞**
+![使用凸包](img/UE_Asset66.png)
 
-**使用简单的形状制作成复杂的物理碰撞**,是常用的设置物体物理碰撞的方法,因为简单的物理碰撞计算效率最高  
+> 这里可以看到最后生成的碰撞模型是由四块组成的,刚好与设置的凸包数量的值相同  
+> 同理可以修改*最大外壳定点数*来试试,该值越大,每一块凸包的就越精细顶点数目越多  
 
-![设置凸包精细度](gif/UE_Asset5.gif)
+#### 添加复杂碰撞
 
-> 从GIF中可以看到,如何删除物体的碰撞体积,如何使用简单的形状(球盒胶囊)制作物体的碰撞体积  
-> **一个模型可以存在多个碰撞框**  
+会按照模型的顶点和线的关系去生成碰撞关系,模型越复杂生成的模型碰撞效率越低  
+在静态网格的细节面板设置中,可以开启复杂碰撞  
 
-----
+**复杂碰撞与其他物体进行运动交互的复杂度太高,所以物体开启复杂碰撞就不能开启物理模拟**
 
-- **添加K-DOP简单凸包碰撞**
+> 从表现来看就是:如果椅子开启复杂碰撞,则用球打击椅子,椅子不会倒,只会进行判断是否触碰
 
-大概的思想应该是:在物体外围包一个球,然后尽量把球往里面捏,向物体的内轮廓靠拢  
+![简单碰撞与复杂碰撞](img/UE_Asset68.png)
 
-![设置凸包精细度](gif/UE_Asset6.gif)
+- Default 设置“默认”使简单碰撞请求使用见到那碰撞,复杂请求使用是咋碰撞。引擎默认SAC(Simple And Complex)模式
+- Simple And Complex创建简单和复杂的形状。简单形状常用于常规场景查询和碰撞测试。复杂形状(逐多边形,比如:查询(射线检测,将射线的交互特性改为复杂碰撞))用于复杂场景查询。
+- UseSimpleAsComplex 如请求复杂查询,引擎仍将查询简单形态,无视三角网格图。这有助于节约内存,因为我们不需要烘焙三角形网格图。如果碰撞几何体更简单,则可增强性能。
+- UseComplexAsSimple 如请求简单查询,引擎仍将查询复杂形态,无视简单碰撞。该设置可将三角形网格图用作物理模拟碰撞(**使用UseComplexAsSimple无法进行模拟物体**,但可以将其和其他模拟物体进行碰撞)
+
+![简单碰撞与复杂碰撞](img/UE_Asset67.png)
+
+![简单碰撞与复杂碰撞](img/UE_Asset69.png)
+
+> 前面说的,在查询时可以使用复杂碰撞检测
+
+### 碰撞设置
+
+- **物体类型**
+
+虚幻中使用物体类型来描述碰撞关系。虚幻只提供了少量的物体类型,我们可以在碰撞设置中进行添加  
+虚幻允许我们额外添加18种碰撞物体类型  
+
+- **踪迹类型**
+
+踪迹类型用来相应和射线之间的交互关系。虚幻中默认提供两种踪迹类型  
+也可以自定义添加其他踪迹类型,虚幻最多允许额外添加18个踪迹类型  
+
+
+![添加物体类型](img/UE_Asset70.png)
+
+> 在`Object Channels`中添加自定义碰撞类型  
+>> 每加一个物体可以选择该物体与其他所有物体的交互关系
+> 在`Trace Channels`中添加自定义踪迹类型  
+>> 每加一个踪迹类型可以选择该物体与其他所有物体的交互关系
+
+![添加物体类型](img/UE_Asset71.png)
+
+- **碰撞启用设置**
+
+还是同样的面板中,关于物体碰撞检测的设置
+
+1. No Collision 没有任何碰撞信息产生,并且没有物理碰撞效果
+2. Query Only 只会产生碰撞通知(堆叠通知),但没有物理效果
+3. Physics Only 只会产生物理效果,不产生碰撞通知(堆叠通知)
+4. Collision Enable 即产生碰撞通知,也产生物理效果
+
+![添加物体类型](img/UE_Asset72.png)
+
+虚幻引擎会**优先**检查碰撞启用设置,再进行物体之间的碰撞类型判断  
+也就是说如果碰撞启用设置为`No Collision`,即使两个物体的物体类型是阻挡关系也不会产生阻挡效果  
+
+- **碰撞响应事件**
+
+虚幻中的碰撞响应分为忽略、堆叠、阻挡,与之对应的事件我们尽可以获得到
+
+1. On Component Hit 触发阻挡
+2. On Component Begin Overlap 开始堆叠
+3. On Component End Overlap 堆叠结束
+
+我们可以调整组件的碰撞预设,或是自定义碰撞预设,以达到响应碰撞的不同结果  
+
+**堆叠事件**
+
+堆叠事件分为进入和退出堆叠,在虚幻中希望获得堆叠事件通知,需要满足以下条件
+
+1. **双方必须都**勾选生成堆叠事件通知
+2. 物体有碰撞包裹
+3. 碰撞预设体中物体之间的碰撞方式为堆叠(有一方开启即可)
+
+![添加物体类型](img/UE_Asset73.png)
+
+**撞击事件**
+
+撞击事件的必要条件
+
+1. 希望接收事件通知方式勾选生成撞击事件(谁希望接收,谁开启)
+2. 双方任意一方开启物理模拟
+3. 双方具备碰撞包裹
+4. 碰撞预设中物体的碰撞关系为阻挡
+
+![添加物体类型](img/UE_Asset74.png)
+
+
+### 物理追踪
+
+虚幻中的物理追踪是在**引擎运行状态下**,允许使用**线或者形状**与场景物体产生交互,并将交互结果进行反馈,以达到动态产生物理交互响应的目的
+
+- 线性检测(射线检测)
+- 形状检测(球、盒子、胶囊)
 
-----