Chaos Cloth Dataflow中预览非流形几何体时的数组越界错误

数组越界错误

[Attachment Removed]

Steps to Reproduce

  1. 在布料编辑器工具中,输入一个包含非流形几何体的渲染模型(即存在被超过两个三角形共享的边)。
  2. FDynamicMesh3::AppendTriangle处理这些边时,会将其标记为 NonManifoldID
  3. 在工具设置过程中(例如 UClothMeshSelectionTool::SetupUClothEditorWeightMapPaintTool::Setup中),当代码执行到 bHasNonManifoldMapping分支时,数组仍然使用 GetNumSimVertices3D的数量进行初始化。
  4. 将预览模式切换到 “Render” 模式。
  5. 此时会发生数组越界错误。
    [Attachment Removed]

您好, 我这边在5.5和主分支都没能复现, 如下视频, 非流形的模型绘制max distance切换渲染和解算模型没有出现错误.

方便发一个可复现的简要工程看下么? 谢谢

[Attachment Removed]

需要同时导入一个Model作为SImModel,另一个作为RenderModel,示例视频如下:

[Attachment Removed]

我用典型的非流形模型, sim和render分别导入, 依旧没能复现, 如下图.

你说的代码中绘制工具setup时 对NonManifold的处理, 我没有看出明显问题. DynamicMeshToWeight数组的大小应该是编辑时Dynamic Mesh的点数, 非流形边上的点会复制拆开, 可以参考FClothPatternToDynamicMesh::Convert中如何处理非流形边; WeightToDynamicMesh数组大小是模拟模型的点数, 非流形边上的点是连接起来的, 模拟时不会散开.

不知道你们有没有改过代码, 不方便发资产的话, 可以先用launcher版本引擎测试下么? 或者也可以试试更简单的非流形模型在你们引擎中操作是否会崩溃, 谢谢.

[Image Removed]

[Attachment Removed]