@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

(原) MatEditor部- UmateriaEditor中Texture使用过程(1)的更多相关文章

  1. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)修正

    @author: 白袍小道 转载说明原处,爱护劳动 插件同步在GITHUB: DaoZhang_XDZ         说明 1.本篇是接着-----(原) MaterialEditor部- Umat ...

  2. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(3)

    @author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ         说明 1.本篇是接着-----(原) MaterialEditor部- UmateriaE ...

  3. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(1)

    @author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ     最后YY需求(手滑) 1.在理清楚基础套路和细节后,自定义纹理资源,并加入到现有UE材质系统 2. ...

  4. (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(2)

    @白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ     需求: 1.梳理FexpressionInput和Output的编译和链接(套路和逻辑目的) 2.如何做到节点编译 ...

  5. 源码编译OpenJdk 8,Netbeans调试Java原子类在JVM中的实现(Ubuntu 16.04)

    一.前言 前一阵子比较好奇,想看到底层(虚拟机.汇编)怎么实现的java 并发那块. volatile是在汇编里加了lock前缀,因为volatile可以通过查看JIT编译器的汇编代码来看. 但是原子 ...

  6. 【原】实时渲染中常用的几种Rendering Path

    [原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...

  7. mysql中SQL执行过程详解与用于预处理语句的SQL语法

    mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...

  8. vue.js+webpack在一个简单实例中的使用过程demo

    这里主要记录vue.js+webpack在一个简单实例中的使用过程 说明:本次搭建基于Win 7平台 Node.js 安装官网提供了支持多种平台的的LTS版本下载,我们根据需要来进行下载安装.对于Wi ...

  9. Hadoop计算中的Shuffle过程(转)

    Hadoop计算中的Shuffle过程 作者:左坚 来源:清华万博 时间:2013-07-02 15:04:44.0 Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解Ma ...

随机推荐

  1. 简单使用Idea创建三层架构项目和数据库连接(使用原生ajax进行访问+ajax)

    Idea创建三层架构项目 首先创建一个Web项目model 创建Web完成后进行创建entity.dao.service 特别注意 根据上面的步骤进行创建即可得到 创建完成 我们首先创建数据库 cre ...

  2. PyCharm Notes | PyCharm 使用笔记(远程访问服务器code配置指南)

    PyCharm is a strong IDE for python programmer. Not only because it has a similar face with VS or som ...

  3. 【luogu P1962 斐波那契数列】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1962 给你篇dalao的blog自己看吧,把矩阵快速幂的板子一改就OK #include <algor ...

  4. 让IIS支持无后缀名访问

    IIS中添加对Mime类型 .   application/octet-stream

  5. 自动计算UITableViewCell高度2(CGRect约束)

    1.先创建model .h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface LBDNe ...

  6. JDBC相关

    //原生jdbc操作案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; i ...

  7. git简单配置

    1.安装完git查看版本 git --version 2.配置用户名邮箱 git config --global user.name "chencheng" git config ...

  8. Percona-Tookit工具包之pt-show-grants

      Preface       User privileges regulation is pretty important in DBAs routine job.As we all know,it ...

  9. FROM_UNIXTIME

    FROM_UNIXTIME 格式化MYSQL时间戳函数   函数:FROM_UNIXTIME作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示.语法 ...

  10. thinkphp 3.2中依靠关联模型来关联三个表

    这里说的是用thinkphp3.2关联模型关联三个表 根据用户表查询出三个表的数据,需要两个model来配合,第一个model是根据user表来查询到班级的信息,然后第二个model是根绝banji中 ...