UE4 给static mesh 动态添加Socket

UE4 给static mesh 动态添加Socket

https://blog.csdn.net/u011407338/article/details/103313608

做个笔记

做项目遇到一个问题,就是需要给静态模型 static mesh 动态添加 Socket,手动必须在编辑器下,打开模型编辑器窗口,如下右下角这里添加

//目前只有4.23 版本的代码中含有Add Socket()函数,但是这个函数需要传入一个空的Socket类型的索引,翻遍了蓝图也没有相关的节点,只能自己在插件里创建了。

 

UE4源代码 参考 位置

D:\Program Files\Epic Games\UE_4.23\Engine\Source\Editor\UnrealEd\Private\Fbx\FbxStaticMeshImport.cpp

2267行    到  2297行

下面是实现代码 记得将xxx 换成你自己的蓝图类名

xxxBPLibrary.h里

包含头文件

#include "Engine/StaticMeshSocket.h"    添加插槽

/*   在传入的Static mesh 组件上 创建一个空的Socket 类型*/
        UFUNCTION(BlueprintCallable, meta = (WorldContext = "WorldContextObject", DisplayName = "Create Socket", Keywords = " Static Mesh Socket"), Category = " Plugin")
        static UStaticMeshSocket* CreateSocket(UObject* WorldContextObject, UActorComponent * ActorComp, FName MySocketName, FTransform SocketTransform,FString MyTag);

xxxBPLibrary.cpp里

UStaticMeshSocket* UxxxxxBPLibrary::CreateSocket( UObject * WorldContextObject, UActorComponent * ActorComp, FName MySocketName, FTransform SocketTransform, FString MyTag)
{
    class UStaticMeshSocket* MySocket ;
    UStaticMeshComponent* SourceMeshComp = Cast<UStaticMeshComponent>(ActorComp);
    UStaticMesh* MyStaticMesh = SourceMeshComp->GetStaticMesh();

    // If the socket didn't exist create a new one now
    MySocket = NewObject<UStaticMeshSocket>(MyStaticMesh);
    check(MySocket);

        MySocket->SocketName = MySocketName;
        MyStaticMesh->AddSocket(MySocket);

        MySocket->Tag = MyTag;

        MySocket->RelativeLocation = SocketTransform.GetLocation();
        MySocket->RelativeRotation = SocketTransform.GetRotation().Rotator();
        MySocket->RelativeScale = SocketTransform.GetScale3D();
    
        return MySocket;
    
}

 

 

 

 

 

### 回答1: UE4静态网格材质是指应用于静态网格体的材质。静态网格体是由顶点、多边形和顶点颜色构成的三维模型,静态网格材质负责定义这些三维模型的外观和表面属性。 UE4中,可以通过将材质应用到静态网格体上,来改变其外观。静态网格材质可以包含各种着色属性,如颜色、纹理、法线贴图、金属度、粗糙度等。通过调整这些属性的数值或导入自定义图片,可以实现不同材质效果,如金属、木材、石头、草地等。 在UE4中创建一个静态网格材质,首先需要在材质编辑器中创建一个新的材质实例。然后,可以通过添加各种材质节点来定义不同的属性。例如,添加一个颜色节点可以调整模型的基础颜色,添加一个纹理节点可以贴上自定义的贴图来改变模型的表面纹理。 在应用材质到静态网格体时,可以通过在级别编辑器中选择网格体并将创建的材质实例拖放到这个网格体上来实现。一个静态网格体可以应用多个材质,通过在编辑器中选择其不同部分,可以分别给不同的部分应用不同的材质。 总之,UE4静态网格材质是用于定义静态网格体外观和表面属性的工具,通过调整不同属性的数值或导入自定义贴图,可以实现各种不同的材质效果。 ### 回答2: UE4中的Static Mesh是指由顶点和面构成的静态模型。而材质是用来渲染物体表面的一种方式。在UE4中,我们可以给Static Mesh添加材质来改变其表面的外观和质感。 首先,我们需要创建一个材质实例来设置Static Mesh的材质。在UE4中,我们可以使用材质编辑器来创建和编辑材质。在材质编辑器中,我们可以添加各种节点来控制Static Mesh的纹理、颜色、高光、法线贴图等属性。 然后,将创建好的材质实例应用到Static Mesh上。可以通过选中Static Mesh,在详细面板的材质选项中选择已创建的材质实例。这样就可以将材质应用到Static Mesh上,并在场景中进行预览。 另外,UE4还提供了一些可以控制Static Mesh材质的属性。比如,可以调整材质的透明度、金属度、粗糙度等参数,以达到更好的渲染效果。此外,还可以使用材质实例中的参数来实现动态材质的效果,比如动态的纹理滚动、颜色变换等。 总之,UE4中的Static Mesh材质功能非常强大。通过选择合适的材质实例并调整对应的属性,我们可以使Static Mesh在游戏中呈现出各种不同的外观和效果,增强游戏的视觉效果和沉浸感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值