Aracılığıyla paylaş


Ağ yapıları

Tireler, yalnızca model dönüştürme yoluyla oluşturulabilen sabit paylaşılan kaynaklardır. Tireler işleme için kullanılır, ancak aynı zamanda ray cast sorguları için bir fizik gösterimi sağlamak için kullanılır. Bir ağı 3B alana yerleştirmek için bir Varlığa MeshComponent ekleyin.

Mesh türleri

ARR'de iki ayrı ağ kaynağı türü vardır: Üçgen ağlar ve nokta bulutları. Her iki tür de aynı API sınıfı Meshtarafından temsil edilir. Ayrı ağ türleri için küçük davranış farklılıkları dışında, kullanıma sunulan API işlevselliği aynıdır.

Dönüştürme hizmeti, uygun ağ türünü kaynak dosya uzantısına göre otomatik olarak belirler. Örneğin, bir FBX dosyası her zaman üçgen ağ olarak dönüştürülürken, PLY nokta bulutu olarak kabul edilir. Desteklenen dosya biçimlerinin tam listesi için kaynak dosya biçimleri listesine bakın.

Nokta bulutu ile üçgen ağ dönüştürmeleri arasında kullanıcıya yönelik iki önemli fark vardır:

  • Nokta bulutu kafesleri hiçbir malzemeyi açığa çıkarmaz. Noktaların görsel görünümü yalnızca nokta başına renkleriyle tanımlanır,
  • nokta bulutları bir sahne grafiğini kullanıma sunmaz. Bunun yerine, tüm noktalar kök düğüm varlığına eklenir.

Mesh kaynağı özellikleri

Mesh Sınıf özellikleri şunlardır:

  • Malzemeler: Bir malzeme dizisi. Her malzeme farklı bir alt iş tarafından kullanılır. Dizideki birden çok girdi aynı malzemeye başvurabilir. Bu dizideki girdiler çalışma zamanında değiştirilemez, ancak malzeme özellikleri değiştirilebilir. Nokta bulutları için bu dizi boş.

  • Sınırlar: Ağ köşelerinin yerel boşluk ekseni hizalı sınırlayıcı kutusu (AABB).

MeshComponent

MeshComponent sınıfı, bir mesh kaynağının örneğini yerleştirmek için kullanılır. Her MeshComponent tek bir ağa başvurur. Her bir alt iş işlemek için hangi malzemelerin kullanıldığını geçersiz kılabilir.

MeshComponent özellikleri

  • Mesh: Bu bileşen tarafından kullanılan mesh kaynağı.

  • Malzemeler: Mesh bileşeninin kendisinde belirtilen malzeme dizisi. Dizi her zaman mesh kaynağındaki Materials dizisiyle aynı uzunlukta olur. Mesh varsayılanından geçersiz kılınmayacak malzemeler bu dizide null olarak ayarlanır.

  • UsedMaterials: Her alt iş için gerçekten kullanılan malzemelerin dizisi. Null olmayan değerler için Materials dizisindeki verilerle aynı olacaktır. Aksi takdirde mesh örneğindeki Materials dizisindeki değeri içerir. Bu dizi salt okunur.

Mesh paylaşımı

Bir Mesh kaynak, birden çok ağ bileşeni örneği arasında paylaşılabilir. Ayrıca, Mesh bir mesh bileşenine atanan kaynak herhangi bir zamanda program aracılığıyla değiştirilebilir. Aşağıdaki kodda bir ağın nasıl kopyalanmış olduğu gösterilmektedir:

Entity CloneEntityWithModel(RenderingConnection api, Entity sourceEntity)
{
    MeshComponent meshComp = sourceEntity.FindComponentOfType<MeshComponent>();
    if (meshComp != null)
    {
        Entity newEntity = api.CreateEntity();
        MeshComponent newMeshComp = api.CreateComponent(ObjectType.MeshComponent, newEntity) as MeshComponent;
        newMeshComp.Mesh = meshComp.Mesh; // share the mesh
        return newEntity;
    }
    return null;
}
ApiHandle<Entity> CloneEntityWithModel(ApiHandle<RenderingConnection> api, ApiHandle<Entity> sourceEntity)
{
    if (ApiHandle<MeshComponent> meshComp = sourceEntity->FindComponentOfType<MeshComponent>())
    {
        ApiHandle<Entity> newEntity = *api->CreateEntity();
        ApiHandle<MeshComponent> newMeshComp = api->CreateComponent(ObjectType::MeshComponent, newEntity)->as<RemoteRendering::MeshComponent>();
        newMeshComp->SetMesh(meshComp->GetMesh()); // share the mesh
        return newEntity;
    }
    return nullptr;
}

API belgeleri

Sonraki adımlar