Войти
UE4 CommunityФорум

Нужно изменить цвет обекта

#0
15:32, 12 сен. 2019

Нужно изменить цвет обекта.

Я использую UProceduralMeshComponent -ProceduralMeshComponent-> CreateMeshSection для рисования  обекта. И там есть параметр VertexColor

Мне надо задать два цвета для моих обектов. У меня стена и окно.
Я задаю так:
        FColor WallColor(255, 0, 0, 255);
 
  FColor WindowColor(255, 255, 0, 255);
        TArray<FColor> VertexColors;
Все это я делаю на С ++
Когда я запускаю сам проект и перехожу уже в Unreal Engine Editor я там создаю сцену и  перетаскиваю свой обект класса, который я создаю в С ++.
В редакторе я создаю материал - красный цвет - Vertex Color.
Но я не могу накласны на свой обект класса его так как в обекта нету параметра - материал куда можно вставить цвет ((.

Как мне изменить тогда цвет своего обекта?


#1
15:45, 12 сен. 2019

https://docs.unrealengine.com/en-US/API/Runtime/Engine/Components… nt/index.html
SetMaterial()

#2
16:17, 12 сен. 2019

Osiris
но я  же использую UProceduralMeshComponent . Так можно одновременно юзать  два компонента?

#3
18:34, 12 сен. 2019

UCLASS(HideCategories=(Object, LOD), Meta=(BlueprintSpawnableComponent), ClassGroup=Rendering)
class UProceduralMeshComponent :
    public UMeshComponent,
    public IInterface_CollisionDataProvider

#4
20:03, 12 сен. 2019

Osiris нашел один сайт. Но я  не пойму как  он создает параметр и делает с ним связку Custom Mesh? Что в  редакторе нужно выбрать чтобы создать такой параметр. Два остальных я  сделал.... а  этот не могу найти(((
Изображение

#5
21:48, 12 сен. 2019

Add component ?
Или не ?
сейчас анрил не открыт

#6
21:58, 12 сен. 2019

Я не уверен как там конкретно делается я просто смотрю по API что там есть такие связи, а что выведено в редактор я не знаю, я думаю что ты создаешь UProceduralMeshComponent в коде, из кода там есть доступ к установке материала и т.д.

#7
0:00, 13 сен. 2019

Osiris
да в коде создаю. но у меня  не вышло через set material создать маетериал.....

#8
0:19, 13 сен. 2019

Osiris
Я такое  делаю в коде:
В конструкторе:
        ProceduralMeshComponent = CreateDefaultSubobject<UProceduralMeshComponent>("WallMesh");
  ProceduralMeshComponent->bUseAsyncCooking = true;
  ProceduralMeshComponent->SetupAttachment(RootComponent);

  Material = CreateDefaultSubobject<UMaterial>(TEXT("Material"));

В beginPlay.cpp
    ProceduralMeshComponent->SetMaterial(0, Material);
    ProceduralMeshComponent->CreateMeshSection(..........);

И оно кричит на
ProceduralMeshComponent->SetMaterial(0, Material);
Что я не так сделал?

#9
2:03, 13 сен. 2019

dimaSlon
>     ProceduralMeshComponent->SetMaterial(0, Material);
>     ProceduralMeshComponent->CreateMeshSection(..........);

ProceduralMeshComponent->CreateMeshSection(..........);
ProceduralMeshComponent->SetMaterial(0, Material);

#10
(Правка: 8:37) 8:36, 13 сен. 2019

попробуй
https://docs.unrealengine.com/en-US/Engine/Rendering/Materials/Ma… es/index.html

Material Instance Dynamic - Can be calculated (and edited) at runtime.

UE4 CommunityФорум