当前位置: 首页 > news >正文

UE5 Grid3D 学习笔记

一、Neighbor Grid 3D 的核心作用

NeighborGrid3D 是一种基于位置的哈希查找结构,将粒子按空间位置划分到网格单元(Cell)中,实现快速邻近查询:

  • 空间划分:将模拟空间划分为多个三维网格单元(Cell),每个单元可存储多个粒子(称为 “Neighbor”)。

  • 加速查询:通过位置→网格索引→粒子索引的映射,避免全局遍历粒子,极大提升邻近粒子搜索效率(如查找最近粒子、属性传递)13。

  • 典型应用:颜色传递、距离检测、动态碰撞等需粒子交互的场景。

二、“Initialize Neighbor Grid” 的具体功能

该模块负责初始化网格的基础参数和变换矩阵,是后续操作的前提:

  1. 网格参数配置

    • NumCell:定义网格在X/Y/Z轴的分辨率(如 (10,10,10) 表示10×10×10的网格)。

    • MaxNeighborsPerCell:限制单个Cell内可存储的粒子数量(超出时粒子可能注入失败)1。

    • GridExtents:通过输入世界空间范围(如 WorldGridExtents)定义网格的物理大小12。


  • 步骤1:通过位置获取所在Cell的索引。

  • 步骤2:遍历该Cell内所有Leader粒子,比较距离并记录最近粒子的Index。

  • 步骤3:用 Attribute Reader 读取该粒子的属性(如颜色)13。


  • Avoid Distance Field Surface 是 Niagara 粒子系统中用于动态规避场景距离场表面的模块,通过计算粒子与全局距离场(Global Distance Field)的交互力,实现粒子在运动过程中自动绕开静态网格体表面。其核心原理如下:

  • 距离场基础
    距离场(Signed Distance Field, SDF)存储了空间点到最近物体表面的有向距离:

    • 正值:点在物体外部,距离表面越远值越大。

    • 负值:点在物体内部,距离表面越近值越接近零37。

  • 规避力计算
    模块根据粒子当前位置采样距离场值,生成一个排斥力方向(从表面指向粒子),力的大小随距离递减:

    • 粒子接近表面时排斥力增强,防止穿透。

    • 粒子远离表面时排斥力减弱,避免过度偏移

Nearest Surface Avoidance (最近表面避免)

  • 目的: 让粒子远离它当前位置最近的任何场景表面

Oncoming Surface Avoidance (迎面表面避免)

  • 目的: 让粒子避免撞击到它当前运动方向正前方的表面

  • 工作原理:

    • 对于每个粒子,沿着其当前速度方向(Velocity 向量) 发射一条射线(Ray)

    • 使用全局距离场进行高效的射线步进(Ray Marching),检测射线前方一定距离(由参数控制) 内是否有表面。

    • 如果检测到前方有表面(即射线击中了距离场),则计算一个排斥力向量

    • 这个力的方向通常是从检测到的撞击点指向粒子当前位置的方向(或者基于撞击点表面法线的某种反射/偏转方向)。

    • 力的强度通常基于粒子到预测撞击点的距离以及粒子速度的大小进行调节(距离越近、速度越快,力越强)。


Populate Neighbor Grid(填充邻域网格),通过输入Grid3D,粒子位置信息,本地空间的转换,来构建

  • 输入粒子位置、变换矩阵、Grid对象。

  • 通过HLSL代码将粒子位置转换为网格索引(CellIndex),并将粒子索引(Particle Index)关联到对应Cell的Neighbor列表中。

说白了,就是构建粒子的查询哈希表

http://www.lqws.cn/news/571861.html

相关文章:

  • 什么是IPFS(InterPlanetary File System,星际文件系统)
  • c# 在sql server 数据库中批插入数据
  • C++ 格式化输入输出
  • 「Java案例」输出24个希腊字母
  • 计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)
  • Linux下的调试器-gdb(16)
  • 信息安全与网络安全---引言
  • 矩阵的定义和运算 线性代数
  • 设计模式 | 组合模式
  • VMware设置虚拟机为固定IP
  • Transformer结构与代码实现详解
  • redisson看门狗实现原理
  • Linux基本命令篇 —— head命令
  • 【锁相环系列5】再谈数字锁相环
  • python sklearn 机器学习(1)
  • 多模态大语言模型arxiv论文略读(143)
  • 代理模式 - Flutter中的智能替身,掌控对象访问的每一道关卡!
  • ⚙️ 深度学习模型编译器实战:解锁工业级部署新范式​​—— 基于PyTorch-MLIR的全流程优化指南(开源工具链集成)​​
  • Python银行管理系统01升级(适合初学者)
  • 【百日精通JAVA | 语法篇】static关键字
  • CppCon 2017 学习:Undefined Behavior in 2017
  • idea运行到远程机器 和 idea远程JVM调试
  • x86 rop攻击理解2
  • 设计模式-外观模式、适配器模式
  • 设备健康状态实时监测:从技术原理到中讯烛龙的智能实践
  • X-Search:Spring AI实现的AI智能搜索
  • redis延时双删,为什么第一次删除
  • 检查达梦外部表
  • ROS的可视化工具rviz介绍
  • wpf的Binding之UpdateSourceTrigger