(原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(1)
@author: 白袍小道
转载说明原处
插件同步在GITHUB: DaoZhang_XDZ
最后YY需求(手滑)
1、在理清楚基础套路和细节后,自定义纹理资源,并加入到现有UE材质系统
2、制作一个简单的快速预览纹理在材质中的表现
3、输入的纹理支持GIF、RAW 、或自定义格式,统一转换到Utexture.并放入节点
效果:

一、源码和API
1、Factory:

2、FExpressionOutput 和 FExpressionInput
(Unreal的 Anim ,MAT 设计上 采用了倒着获取结果,结果的产生[理解为Node]和递归。
并将Node作为存放逻辑的部分,这个方式可以运用到其他地方如任务系统,导航点等)
|
UObject* UMaterialFactoryNew::FactoryCreateNew(UClass* Class,UObject* InParent,FName Name,EObjectFlags Flags,UObject* Context,FFeedbackContext* Warn) { UMaterial* NewMaterial = NewObject<UMaterial>(InParent, Class, Name, Flags); if ( InitialTexture != nullptr ) { // An initial texture was specified, add it and assign it to the BaseColor UMaterialExpressionTextureSample* TextureSampler = NewObject<UMaterialExpressionTextureSample>(NewMaterial); { //这里是编辑记录 TextureSampler->MaterialExpressionEditorX = -250; TextureSampler->Texture = InitialTexture; //纹理类型 TextureSampler->AutoSetSampleType(); } NewMaterial->Expressions.Add(TextureSampler); //FExpressionInput/OutPut 是表达式逻辑节点输入的抽象 FExpressionOutput& Output = TextureSampler->GetOutputs()[0]; FExpressionInput& Input = (TextureSampler->SamplerType == SAMPLERTYPE_Normal) ? (FExpressionInput&)NewMaterial->Normal : (FExpressionInput&)NewMaterial->BaseColor; Input.Expression = TextureSampler; Input.Mask = Output.Mask; Input.MaskR = Output.MaskR; Input.MaskG = Output.MaskG; Input.MaskB = Output.MaskB; Input.MaskA = Output.MaskA; NewMaterial->PostEditChange(); } return NewMaterial; } |
二、模拟实现:
|
UFUNCTION(BlueprintCallable,Category= "MaterialStudio|MatNodeLib") static UMaterial* QuickPreviewTextureOnMaterialBNode(const UTexture* pTexture,const UMaterial* pMaterial); |
其中:
Color ,Scale,Vector

第一节Over
(原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(1)的更多相关文章
- (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)修正
@author: 白袍小道 转载说明原处,爱护劳动 插件同步在GITHUB: DaoZhang_XDZ 说明 1.本篇是接着-----(原) MaterialEditor部- Umat ...
- (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)
@author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ 说明 1.本篇是接着-----(原) MaterialEditor部- UmateriaE ...
- (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(2)
@白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ 需求: 1.梳理FexpressionInput和Output的编译和链接(套路和逻辑目的) 2.如何做到节点编译 ...
- (原) MatEditor部- UmateriaEditor中Texture使用过程(1)
@author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ 最后YY需求(手滑)(开黑前弄下,充数,见谅) 1.在理清楚基础套路和细节后,自定义纹理资源,并加 ...
- 【Android】源码external/目录中在编译过程中生成的文件列表
=> external/eyes-free: accessibilityvalidator.jar (host,share) => external/mesa3d: libMesa ...
- 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
第48章 MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 第48章 MDK的编译过程及文件类型全解
Frm: http://www.cnblogs.com/firege/p/5806134.html 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教 ...
- MDK 的编译过程及文件类型全解
MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是很有帮助的,在有arm9开发的基础上,下 ...
- [译]C++, Java和C#的编译过程解析
1.1.1 摘要 我们知道计算机不能直接理解高级语言,它只能理解机器语言,所以我们必须要把高级语言翻译成机器语言,这样计算机才能执行高级语言编写的程序,在接下来的博文中,我们将介绍非托管和托管语音的编 ...
随机推荐
- 轻量ORM-SqlRepoEx (六) JOIN
示例使用的是最新 SqlRepoEx 2.0.2 可在:https://github.com/AzThinker/SqlRepoEx2.0Demo 或:https://gitee.com/azthin ...
- 【转载】RETE算法研究
本文转自:http://www.ibm.com/developerworks/cn/opensource/os-drools/ RETE算法是大多数规则引擎采用的一种模式匹配算法,比如开源的Drool ...
- 选择排序_c++
选择排序_c++ GitHub 文解 选择排序的核心思想是对于 N 个元素进行排序时,对其进行 K = (N - 1) 次排序,每次排序从后(N + 1 - K)个数值中选择最小的元素与以 (K - ...
- 国产Linux下开发正式开工(deepin)
配置开发环境 1.一般工具 在深度商店安装QQ,微信,安装一般软件WPS,Navicat数据库工具,文本编辑notepadqq. 影视娱乐爱奇艺,优酷,酷狗. 2.安装主要的开发环境 (1)c# 深度 ...
- 类似"音速启动"的原创工具简码"万能助手"在线用户数终于突破100了!
原本只是开发出来方便自己的一个小工具,看到群友也喜欢,就随手分享了, 经过1个多月的自然积累,在线用户数终于突破100了,这增长速度实在让人泪奔~ 博客园的朋友如果看到,喜欢的话就拿去用吧, 万能助手 ...
- c和c++单链表
c++版 #include<iostream> #include<malloc.h> using namespace std; struct node{ int data; n ...
- hdu_5187_zhx's contest
Problem Description As one of the most powerful brushes, zhx is required to give his juniors n probl ...
- 19-3-5Python中列表、元组、以及range
一.列表: 为什么要学列表? 因为字符串存在缺点: 1) 只能存储少量的数据. 2) 数据类型无论索引.切片 获取的都是字符串类型,类型过于单一,转化成它原来的类型还需要进一步转换 ...
- windows10上安装mysql
环境:windwos 10(1511) 64bit.mysql 5.7.14 一.下载mysql 1. 在浏览器里打开mysql的官网http://www.mysql.com/ 2. 进入页面顶部的& ...
- 详解 Python3 正则表达式(二)
上一篇:详解 Python3 正则表达式(一) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些批注和修改 ^_^ 使用正则表达式 ...