找回密码
 立即注册
查看: 488|回复: 0

[Unreal]Dynamic Material (C++)

[复制链接]
发表于 2023-4-12 20:16 | 显示全部楼层 |阅读模式
好记性不如烂笔头,而且Unreal4用的相对来说也比较少,工作用Unity,学习时间大部分用在DirectX上,也就偶尔看看Unreal。Unreal的API肯定记不住,现在写下来,省的下次再去Google看一堆文章,方便自己。
        看着蓝图教程,用C++来实现,发现自己还是满蛋疼的。教程中是拖入一个新的Mesh来区分AI和Player,懒得拖,就用Player的Mesh,修改下显示颜色来做区分,简单粗暴。
        先来看下原来的材质球:

        拖一个VectorParameter,取名为Color,再跟之前的TextureSample相乘就好,这个BaseColor应该是Diffuse(漫反射吧,我猜的,看到了Specular和Normal)

        接着就是代码上的修改了:
void AAICharacter::Initialize(){        // Set Skeletal Mesh        auto skeletalMesh = GetMesh();        static ConstructorHelpers::FObjectFinder<USkeletalMesh> aiMesh(                TEXT("SkeletalMesh'/Game/Model/Character/Eve_by_J__Gonzales.Eve_by_J__Gonzales'"));        if (aiMesh.Object != nullptr)        {                skeletalMesh->SetSkeletalMesh(aiMesh.Object);                auto meshLocation = FVector(0.0f, 0.0f, -88.0f);                auto meshRotation = FRotator(0.0f, -90.0f, 0.0f);                auto meshScale = FVector(1.0f, 1.0f, 1.0f);                auto meshTransform = FTransform(meshRotation, meshLocation, meshScale);                skeletalMesh->SetRelativeTransform(meshTransform);        }        // Create Dynamic Material        auto dynamicMaterial = skeletalMesh->CreateDynamicMaterialInstance(0);        dynamicMaterial->SetVectorParameterValue(TEXT("Color"), FLinearColor(1.0f, 0.0f, 0.0f, 1.0f));}       上面一段就是AI设置Mesh的代码,跟Player的代码一样。有注释。接下来的2行代码就是修改材质球中参数名为Color的VectorParameter,为了区分,将AI的改成红色。
        效果如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 07:56 , Processed in 0.090070 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表