UE中基本图形的原始大小是多大

一、问题

在一些简单的测试中,我们经常会把左侧的一些标准控件,例如Cube、Sphere、Cone、Plane等类型,放置到场景中进行测试。放进场景之后,我们还可以在Details面板中通过Location/Rotation/Scale三个维度对场景中的Actor进行修改。那么在默认(拖入场景中之后未修改)情况下,这些几何图形的维度是什么?Cube的长宽高是多少?

二、对于StaticMeshActor类型

以Cube为例,在右侧"Details==>>Static Mesh==>>Static Mesh",将鼠标移动到cube图标上可以看到,这个cube的资源来自“/Engine/BasicShapes/Cube”,在Engine Content==>>BasicShapes文件夹可以看到这些资源。同样的,将光标移动到这些资源之后,会有一个Appox Size属性。例如cube的这个属性为100×100×100。
具体设置代码在Engine\Source\Runtime\Engine\Private\StaticMesh.cpp文件中
void UStaticMesh::GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const
{
……
const FString ApproxSizeStr = FString::Printf(TEXT("%dx%dx%d"), FMath::RoundToInt(Bounds.BoxExtent.X * 2.0f), FMath::RoundToInt(Bounds.BoxExtent.Y * 2.0f), FMath::RoundToInt(Bounds.BoxExtent.Z * 2.0f));
……
OutTags.Add( FAssetRegistryTag("Materials", FString::FromInt(StaticMaterials.Num()), FAssetRegistryTag::TT_Numerical) );
OutTags.Add( FAssetRegistryTag("ApproxSize", ApproxSizeStr, FAssetRegistryTag::TT_Dimensional) );
OutTags.Add( FAssetRegistryTag("CollisionPrims", FString::FromInt(NumCollisionPrims), FAssetRegistryTag::TT_Numerical));
……
}

三、Brush类型

这个在右侧的Details==>>Brush Settings 页签可以清楚的看到,Brush Type、Brush Shape、X、Y、Z信息。
可以看到默认的Box Brush的值为200×200×200

四、volume类型

以Nav Mesh Bounds Volume为例,由于它直接继承了ABrush,所以和Brush一样,也是通过Brush Settings看到这些信息。

五、补充

这里的维度都是完整的长宽高,在系统内部,是通过center + extent(半高)结构来表示。

六、参考

在Unreal的官网上没有找到这部分的说明,在另外一个地方看到一个可以大致的描述,其中的“Common size recommendations”节描述了相关信息。

 

posted on 2021-09-17 20:50  tsecer  阅读(773)  评论(0编辑  收藏  举报

导航