Go to the documentation of this file.
29 #include "Engine/Texture.h"
31 #include "Materials/MaterialInstanceDynamic.h"
33 #include "ProceduralMeshComponent.h"
39 #include "assimp/Importer.hpp"
41 #include "assimp/mesh.h"
43 #include "assimp/scene.h"
57 #include "RRMeshData.generated.h"
65 #define RAPYUTA_MESH_VISUAL_DEBUG (1)
111 int32 ParentIndex = 0;
122 FTransform RelTransform = FTransform::Identity;
131 FVector MeshScale3D = FVector::OneVector;
140 FVector MeshSize = FVector::ZeroVector;
159 linkProp.
Name = Name;
165 linkProp.
Location = RelTransform.GetLocation();
167 linkProp.
Rotation = RelTransform.GetRotation();
173 visualInfo.
Size = MeshSize;
179 linkProp.
VisualList.Emplace(MoveTemp(visualInfo));
195 jointProp.
Name = Name;
203 jointProp.
Location = RelTransform.GetLocation();
205 jointProp.
Rotation = RelTransform.GetRotation();
223 for (
const auto& boneProp : InBonePropList)
227 linkPropList.Add(boneProp.ConvertToLinkProperty());
231 for (
const auto& boneProp : InBonePropList)
235 if (linkPropList.IsValidIndex(boneProp.ParentIndex))
239 jointPropList.Add(boneProp.GetDefaultJointProperty(linkPropList[boneProp.ParentIndex].Name));
247 void PrintSelf()
const;
284 int32 VertexIndex = 0;
428 uint32 MaterialIndex = 0;
436 Vertices.SetNumZeroed(InNum);
438 VertexColors.SetNumZeroed(InNum);
440 Normals.SetNumZeroed(InNum);
442 UVs.SetNumZeroed(InNum);
444 UV2fs.SetNumZeroed(InNum);
446 ProcTangents.SetNumZeroed(InNum);
448 TriangleIndices.SetNumZeroed(3 * InNum);
450 BoneInfluences.Reset();
456 void PrintSelf()
const;
486 FTransform RelativeTransform = FTransform::Identity;
495 int NodeParentIndex = 0;
535 static void AddMeshData(
const FString& InMeshUniqueName,
const TSharedPtr<FRRMeshData>& InMeshData)
539 MeshDataStore.Add(InMeshUniqueName, InMeshData);
543 static TSharedPtr<FRRMeshData>
GetMeshData(
const FString& InMeshUniqueName)
547 return MeshDataStore.FindRef(InMeshUniqueName);
555 return MeshDataStore.Contains(InMeshUniqueName);
572 TSharedPtr<Assimp::Importer> MeshImporter =
nullptr;
581 bool bIsValid =
false;
617 MaterialInstances.Reset();
623 void PrintSelf()
const;
631 for (
auto& meshNode : Nodes)
635 for (
auto& mesh : meshNode.Meshes)
639 for (
auto& vertex : mesh.Vertices)
643 vertex = InTransform.TransformPosition(vertex);
649 for (
auto& normal : mesh.Normals)
653 normal = InTransform.TransformVectorNoScale(normal);
659 for (
auto& procTangent : mesh.ProcTangents)
663 procTangent.TangentX = InTransform.TransformVectorNoScale(procTangent.TangentX);
679 int32 verticesNum = 0;
681 for (
const auto& meshNode : Nodes)
685 for (
const auto& mesh : meshNode.Meshes)
689 verticesNum += mesh.Vertices.Num();
705 for (
const auto& meshNode : Nodes)
709 for (
const auto& mesh : meshNode.Meshes)
713 if (mesh.VertexColors.Num() > 0)
735 int32 indicesNum = 0;
737 for (
const auto& meshNode : Nodes)
741 for (
const auto& mesh : meshNode.Meshes)
745 indicesNum += mesh.TriangleIndices.Num();
761 for (
const auto& meshNode : Nodes)
765 for (
const auto& mesh : meshNode.Meshes)
769 return mesh.UVs.Num();
bool IsValid() const
Definition: RRMeshData.h:583
The FRRRobotJointProperty struct.
Definition: RREntityStructs.h:524
Unreal Engine Mudule class.
FVector WorldScale
Definition: RREntityStructs.h:1261
void TransformBy(const FTransform &InTransform)
Definition: RRMeshData.h:627
Contains the vertices that are most dominated by that bone. Vertices are in Bone space.
Definition: RRMeshData.h:310
TArray< FVector > Normals
Definition: RRMeshData.h:383
FString Name
Definition: RRMeshData.h:93
int32 GetIndicesNum() const
Definition: RRMeshData.h:731
FVector Size
This size is mostly used for Collision info in case of links being Runtime mesh components.
Definition: RREntityStructs.h:1252
static TSharedPtr< FRRMeshData > GetMeshData(const FString &InMeshUniqueName)
Definition: RRMeshData.h:543
todo
Definition: RRMeshData.h:347
FVector Location
[cm] In URDF/SDF: Child Link's relative Location to its Parent
Definition: RREntityStructs.h:598
Definition: RREntityStructs.h:1694
Contains various commonly used struct definitions for robot & object entities.
TArray< int32 > TriangleIndices
Definition: RRMeshData.h:374
todo
Definition: RRMeshData.h:475
FRRRobotJointProperty GetDefaultJointProperty(const FString &InParentLinkName) const
Definition: RRMeshData.h:189
TArray< FRRBoneInfluence > BoneInfluences
Definition: RRMeshData.h:419
static TMap< FString, TSharedPtr< FRRMeshData > > MeshDataStore
Definition: RRMeshData.h:529
bool HasVertexColors() const
Definition: RRMeshData.h:701
TArray< FVector3f > Positions
Definition: RRMeshData.h:321
DECLARE_DELEGATE_TwoParams(FOnMeshCreationDone, bool, UObject *)
void Reset(uint64 InNum=0)
Definition: RRMeshData.h:432
TArray< FRREntityGeometryInfo > VisualList
Relative visual offset to the link itself(URDF) or parent frame(SDF)
Definition: RREntityStructs.h:1798
TArray< UMaterialInstanceDynamic * > MaterialInstances
Definition: RRMeshData.h:607
Core UE struct housing entity (robot, object) model data, wrapped by FRREntityModelInfo & FRREntityMo...
Definition: RREntityStructs.h:2414
Definition: RREntityStructs.h:1223
FString ChildLinkName
Definition: RREntityStructs.h:644
FRRRobotLinkInertia Inertia
Definition: RREntityStructs.h:1783
int32 GetUVsNum() const
Definition: RRMeshData.h:757
TArray< FColor > VertexColors
Definition: RRMeshData.h:365
static void AddMeshData(const FString &InMeshUniqueName, const TSharedPtr< FRRMeshData > &InMeshData)
Definition: RRMeshData.h:535
ERRRobotJointType Type
Definition: RREntityStructs.h:558
FString Name
Definition: RREntityStructs.h:549
TArray< FProcMeshTangent > ProcTangents
Definition: RRMeshData.h:410
TArray< FRRRobotLinkProperty > LinkPropList
Definition: RREntityStructs.h:2729
todo
Definition: RRMeshData.h:266
float Mass
[kg]
Definition: RREntityStructs.h:1154
TArray< FVector2D > UVs
Definition: RRMeshData.h:401
todo
Definition: RRMeshData.h:523
FQuat Rotation
Definition: RREntityStructs.h:1768
FVector Location
Relative to the parent link.
Definition: RREntityStructs.h:1759
TArray< FRREntityGeometryInfo > CollisionList
Definition: RREntityStructs.h:1821
TArray< FVector3f > Normals
Definition: RRMeshData.h:328
TArray< FRRMeshNodeData > Meshes
Definition: RRMeshData.h:504
TArray< FRRRobotJointProperty > JointPropList
Definition: RREntityStructs.h:2736
FString MeshUniqueName
Definition: RRMeshData.h:566
int8 ParentLinkIndex
Definition: RREntityStructs.h:1744
TArray< FVector2f > UV2fs
Definition: RRMeshData.h:392
TArray< FRRMeshNode > Nodes
Definition: RRMeshData.h:598
void Reset()
Definition: RRMeshData.h:611
TArray< FVector > Vertices
Definition: RRMeshData.h:358
todo
Definition: RRMeshData.h:82
int32 GetVerticesNum() const
Definition: RRMeshData.h:675
static bool IsMeshDataAvailable(const FString &InMeshUniqueName)
Definition: RRMeshData.h:551
FString Name
Definition: RREntityStructs.h:1717
int8 LinkIndex
Definition: RREntityStructs.h:1737
FString ParentLinkName
Definition: RREntityStructs.h:637
FQuat Rotation
[Quaternion] In URDF/SDF: Child Link's relative Rotation to its Parent
Definition: RREntityStructs.h:609
FRRRobotLinkProperty ConvertToLinkProperty() const
Definition: RRMeshData.h:153
static void GenerateLinkJointPropListFromBoneProps(const TArray< FRRBoneProperty > &InBonePropList, FRREntityModelData &OutEntityModelData)
Definition: RRMeshData.h:213