x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Skeletal Mesh crashes editor after reopening

So im creating a Skeletal Mesh Asset inside C++ and i keep getting a crash after reopening the editor, with the error saying

 Invalid number of texture coordinates

Here is my code for creating the Skeletal Mesh Asset.

 // Extract the common/shared skeleton
 FBoneHierarchyBuilder HierarchyBuilder;
 HierarchyBuilder.ProcessHierarchy(Entity);
 
 // Create the skeletal mesh
 const FString TargetMeshName = Entity.Name + TEXT("_SkelMesh");
 const FString TargetMeshPath = LongPackagePath;
 USkeletalMesh* SkeletalMesh = CastChecked<USkeletalMesh>(CreateNewAsset(USkeletalMesh::StaticClass(), TargetMeshPath, TargetMeshName, Flags));
 
 // Create the skeleton
 const FString TargetSkeletonName = Entity.Name + TEXT("_Skeleton");
 const FString TargetSkeletonPath = LongPackagePath;
 USkeleton* EntitySkeleton = CastChecked<USkeleton>(CreateNewAsset(USkeleton::StaticClass(), TargetSkeletonPath, TargetSkeletonName, Flags));
 
 // Initialize the mesh asset
 SkeletalMesh->Materials.Add(UMaterial::GetDefaultMaterial(MD_Surface));
 FSkeletalMeshResource* ImportedResource = SkeletalMesh->GetImportedResource();
 check(ImportedResource->LODModels.Num() == 0);
 ImportedResource->LODModels.Empty();
 FStaticLODModel& LODModel = *new (ImportedResource->LODModels) FStaticLODModel();
 
 SkeletalMesh->LODInfo.Empty();
 SkeletalMesh->LODInfo.AddZeroed();
 SkeletalMesh->LODInfo[0].LODHysteresis = 0.02f;
 FSkeletalMeshOptimizationSettings Settings;
 // set default reduction settings values
 SkeletalMesh->LODInfo[0].ReductionSettings = Settings;
 
 // Pass the number of texture coordinate sets to the LODModel.  Ensure there is at least one UV coord
 LODModel.NumTexCoords = 1;
 
 
 // Create the reference skeleton and update LOD0
 FReferenceSkeleton& RefSkeleton = SkeletalMesh->RefSkeleton;
 HierarchyBuilder.CopyToRefSkeleton(RefSkeleton);
 SkeletalMesh->CalculateRequiredBones(LODModel, RefSkeleton, /*BonesToRemove=*/ nullptr);
 SkeletalMesh->CalculateInvRefMatrices();
 
 // Initialize the skeleton asset and create sockets for each bone
 EntitySkeleton->MergeAllBonesToBoneTree(SkeletalMesh);
 TArray<class USkeletalMeshSocket*>& Sockets = EntitySkeleton->Sockets;
 for (const FName& BoneName : HierarchyBuilder.AllBones)
 {
     if (!BoneName.IsNone())
     {
         USkeletalMeshSocket* Socket = NewObject<USkeletalMeshSocket>(EntitySkeleton, BoneName);
         Socket->SocketName = BoneName;
         Socket->BoneName = BoneName;
         Sockets.Add(Socket);
     }
 }
 
 // Point the mesh and skeleton at each other
 SkeletalMesh->Skeleton = EntitySkeleton;
 EntitySkeleton->SetPreviewMesh(SkeletalMesh);


Any help with correctly setting up this Skeletal Mesh Asset is appreciated!

Product Version: UE Github Master branch
Tags:
more ▼

asked Feb 17 '16 at 07:45 AM in Using UE4

avatar image

Diddykonga
100 14 18 25

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question