5.基于UE4的 Mobile Skeletal Instance——初始化LOD需要信息。_百度知 ...
发布网友
发布时间:2024-10-04 16:03
我来回答
共1个回答
热心网友
时间:2024-10-21 11:01
在最新的UE4版本中,4.24.3和4.25.4都集成了Mobile Skeletal Instance功能,本文将以4.24.3为例详细介绍其初始化LOD所需的信息。首先,更新了纹理分配和Instance Color支持,通过添加Instance数据的VertexBuffer Stream来实现。
文章中提到的宏和结构,如USE_INSTANCE_VERTEX_COLOR和INSTANCE_ARRIBUTE_INDEX_START,为Instance功能提供了基础。Server不启用Instance,而Client支持最多3个动画混合,其中Instance Vertex Color允许添加更多视觉效果。InstanceType结构支持不同类型的Instance,但UE目前的间接光限制了其在手机上的应用,未来可能随着技术进步而改变。
在4.24.3中,关键在于生成Lod VertexBuffer和VertexFactory。FSkeletalMeshObjectGPUSkin和FSkeletalMeshObjectCPUSkin类作为SkinnedComponent在Game和RenderThread之间的桥梁。特别关注FVertexFactoryBuffers,它是LOD VertexBuffer数据初始化的临时变量,MobileInstance在当前情况下暂不支持Morph和Cloth功能。
GetSkinVertexFactory函数会根据需要的动画混合数创建对应的VertexFactory。在MobileInstance下,BlendAnim + 1决定了动画混合个数。TGPUSkinVertexFactory模板参数用于表示动画混合需求,而在Game线程创建的VertexBuffer和VertexFactory随后会被发送到RenderThread进行初始化。
UE4中的FVertexStreamComponent会根据Offset自动管理Stream,Instance数据会用EVertexStreamUsage::Instancing标记。SetData和AddVertexElements函数用于初始化RHI和Input declaration,但Morph和Cloth的Attribute被Instance占用,因此在MobileInstance下不支持。
最后,MobileInstance的Vertex Input相比原始配置有所调整,去除了Morph和Cloth的Arribute,并为InstanceIdStreamIndex等变量的声明提供了便利,以支持未来的dynamic static Instance功能。
热心网友
时间:2024-10-21 10:55
在最新的UE4版本中,4.24.3和4.25.4都集成了Mobile Skeletal Instance功能,本文将以4.24.3为例详细介绍其初始化LOD所需的信息。首先,更新了纹理分配和Instance Color支持,通过添加Instance数据的VertexBuffer Stream来实现。
文章中提到的宏和结构,如USE_INSTANCE_VERTEX_COLOR和INSTANCE_ARRIBUTE_INDEX_START,为Instance功能提供了基础。Server不启用Instance,而Client支持最多3个动画混合,其中Instance Vertex Color允许添加更多视觉效果。InstanceType结构支持不同类型的Instance,但UE目前的间接光限制了其在手机上的应用,未来可能随着技术进步而改变。
在4.24.3中,关键在于生成Lod VertexBuffer和VertexFactory。FSkeletalMeshObjectGPUSkin和FSkeletalMeshObjectCPUSkin类作为SkinnedComponent在Game和RenderThread之间的桥梁。特别关注FVertexFactoryBuffers,它是LOD VertexBuffer数据初始化的临时变量,MobileInstance在当前情况下暂不支持Morph和Cloth功能。
GetSkinVertexFactory函数会根据需要的动画混合数创建对应的VertexFactory。在MobileInstance下,BlendAnim + 1决定了动画混合个数。TGPUSkinVertexFactory模板参数用于表示动画混合需求,而在Game线程创建的VertexBuffer和VertexFactory随后会被发送到RenderThread进行初始化。
UE4中的FVertexStreamComponent会根据Offset自动管理Stream,Instance数据会用EVertexStreamUsage::Instancing标记。SetData和AddVertexElements函数用于初始化RHI和Input declaration,但Morph和Cloth的Attribute被Instance占用,因此在MobileInstance下不支持。
最后,MobileInstance的Vertex Input相比原始配置有所调整,去除了Morph和Cloth的Arribute,并为InstanceIdStreamIndex等变量的声明提供了便利,以支持未来的dynamic static Instance功能。