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”节描述了相关信息。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库