zoukankan      html  css  js  c++  java
  • 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。
    具体设置代码在EngineSourceRuntimeEnginePrivateStaticMesh.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”节描述了相关信息。

  • 相关阅读:
    窗口
    DataTemplateSelector
    CompositeCollection
    Drawing
    模板
    集合视图
    绑定
    动画
    【数据结构初学】(java实现篇)——队列(转)
    慕课学习手记!(完成查找书籍小程序~)
  • 原文地址:https://www.cnblogs.com/tsecer/p/15306253.html
Copyright © 2011-2022 走看看