[UE4] C++에서 동적 메쉬 생성
환경
소개
UE4에서 메쉬를 동적으로 생성할 필요가 있어, 이하의 기사를 참고로 구현했으므로, 그 수법을 소개한다.
결과(재생 → 동적 메쉬 생성)
동적 메쉬 생성 방법
다음의 C++ 액터 클래스를 작성한다(헤더는 디폴트인 채로 문제없다)
MyActor.cpp
#include "ProceduralMeshComponent.h"
AMyActor::AMyActor()
{
UProceduralMeshComponent* mesh; // 動的メッシュを保持するポインタ
mesh = CreateDefaultSubobject<UProceduralMeshComponent>(TEXT("generated-mesh")); // 動的メッシュ生成
RootComponent = mesh; // RootComponentに設定する
FString materialPath = "/Game/M_Tech_Hex_Tile_Pulse";
// メッシュにマテリアルを設定する
// マテリアルインスタンスを利用するときはUMaterialをUMaterialInstanceに変更する
mesh->SetMaterial(0, Cast<UMaterial>(StaticLoadObject(UMaterial::StaticClass(), nullptr, *materialPath)));
// 動的メッシュ用の変数
TArray<FVector> vertices; // 頂点群
TArray<int32> indices; // インデックス群
TArray<FVector> normals; // 法線群(今回は空っぽのままだが、立体を作成するときには設定しないとエッジ部分が変になる)
TArray<FVector2D> texcoords0; // テクスチャー座標群
TArray<FLinearColor> vertex_colors; // 頂点カラー群(今回は空っぽのまま)
TArray<FProcMeshTangent> tangents; // 接線群(今回は空っぽのままだが、立体を作成するときには設定しないとエッジ部分が変になる)
// 頂点群設定
vertices.Add(FVector(-600, 200, 400)); // 左上
vertices.Add(FVector(-600, 200, 200)); // 左下
vertices.Add(FVector(-600, 400, 200)); // 右下
vertices.Add(FVector(-600, 400, 400)); // 右上
// インデックス群生成(三角形ポリゴンを反時計周りに設定)
// 1つ目の三角形ポリゴン
indices.Add( 0 );
indices.Add( 1 );
indices.Add( 2 );
// 2つ目の三角形ポリゴン
indices.Add( 2 );
indices.Add( 3 );
indices.Add( 0 );
// テクスチャー座標群設定
texcoords0.Add(FVector2D(0, 0)); // 左上
texcoords0.Add(FVector2D(0, 1)); // 左下
texcoords0.Add(FVector2D(1, 1)); // 右下
texcoords0.Add(FVector2D(1, 0)); // 右上
// メッシュ生成
mesh->CreateMeshSection_LinearColor( 0, vertices, indices, normals, texcoords0, vertex_colors, tangents, true );
}
동적 메쉬를 생성하는 cpp 파일에 다음을 기술하여 동적 메쉬를 생성한다.
AMyActor* a = GetWorld()->SpawnActor<AMyActor>(FVector(0,0,0), FRotator(0,0,0));
결과
결과는 시작 부분에 표시된 이미지와 같습니다.
마지막으로
인간이나 물건을 데이터화&해석해 보고 싶다는 분.
3D 기술과 심층 학습을 결합하여 뭔가 재미있는 서비스를 만들어보고 싶다! 라는 분.
당사에서는 함께 일해 주는 동료를 대모집하고 있습니다.
흥미가 있는 분은 하기 링크로부터 부디 응모해 주세요!
htps // 아보 t. 자 t. 이 m/레c루이 t/
참고
UE4: ProceduralMeshComponent 입문
UE4/C++: 메쉬의 머티리얼이나 텍스처를 C++ 코드로 제어하는 방법
Reference
이 문제에 관하여([UE4] C++에서 동적 메쉬 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kuroyanagi96/items/d82578a9920fd7d036fc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
인간이나 물건을 데이터화&해석해 보고 싶다는 분.
3D 기술과 심층 학습을 결합하여 뭔가 재미있는 서비스를 만들어보고 싶다! 라는 분.
당사에서는 함께 일해 주는 동료를 대모집하고 있습니다.
흥미가 있는 분은 하기 링크로부터 부디 응모해 주세요!
htps // 아보 t. 자 t. 이 m/레c루이 t/
참고
UE4: ProceduralMeshComponent 입문
UE4/C++: 메쉬의 머티리얼이나 텍스처를 C++ 코드로 제어하는 방법
Reference
이 문제에 관하여([UE4] C++에서 동적 메쉬 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kuroyanagi96/items/d82578a9920fd7d036fc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([UE4] C++에서 동적 메쉬 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kuroyanagi96/items/d82578a9920fd7d036fc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)