(原) MatEditor部- UmateriaEditor中Texture使用过程(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
(原) MatEditor部- UmateriaEditor中Texture使用过程(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编译过程和使用(1)
@author: 白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ 最后YY需求(手滑) 1.在理清楚基础套路和细节后,自定义纹理资源,并加入到现有UE材质系统 2. ...
- (原) MaterialEditor部- UmateriaEditor中 Node编译过程和使用(2)
@白袍小道 转载说明原处 插件同步在GITHUB: DaoZhang_XDZ 需求: 1.梳理FexpressionInput和Output的编译和链接(套路和逻辑目的) 2.如何做到节点编译 ...
- 源码编译OpenJdk 8,Netbeans调试Java原子类在JVM中的实现(Ubuntu 16.04)
一.前言 前一阵子比较好奇,想看到底层(虚拟机.汇编)怎么实现的java 并发那块. volatile是在汇编里加了lock前缀,因为volatile可以通过查看JIT编译器的汇编代码来看. 但是原子 ...
- 【原】实时渲染中常用的几种Rendering Path
[原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...
- mysql中SQL执行过程详解与用于预处理语句的SQL语法
mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...
- vue.js+webpack在一个简单实例中的使用过程demo
这里主要记录vue.js+webpack在一个简单实例中的使用过程 说明:本次搭建基于Win 7平台 Node.js 安装官网提供了支持多种平台的的LTS版本下载,我们根据需要来进行下载安装.对于Wi ...
- Hadoop计算中的Shuffle过程(转)
Hadoop计算中的Shuffle过程 作者:左坚 来源:清华万博 时间:2013-07-02 15:04:44.0 Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解Ma ...
随机推荐
- Android学习笔记_15_网络通信之文件断点下载
一.断点下载原理: 使用多线程下载文件可以更快完成文件的下载,多线程下载文件之所以快,是因为其抢占的服务器资源多.如:假设服务器同时最多服务100个用户,在服务器中一条线程对应一个用户,100条线程在 ...
- 解决Storm 和yarn 8080 端口冲突
本机装了Yarn和Storm后,启动Storm后,发现NodeMange无法启动,找了下没找着在哪修改.只好修改Storm的配置,在配置上添加 ui.port: "9999" 再启 ...
- ADO.NET 之 Entity Framework 基础
Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互.它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合. 术语:LinQ to ...
- centos7 安装 mysql5.7, 以及安装中遇到的问题
# wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# rpm -ivh mysql57-communi ...
- 用c#语言编写分解质因数
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 菜鸟笔记 -- Chapter 6.2 类的构成
在前面我们讲过高级开发语言大多由7种语法构成,但这是一个很空泛的概述,下,面我们仅就针对Java程序来说一下构成一个Java程序的几大部分,其中类是最小的基本元素.类是封装对象属性和行为的载体,而在J ...
- SpringBoot学习15:springboot异常处理方式5(通过实现HandlerExceptionResolver类)
修改异常处理方式4中的全局异常处理controller package com.bjsxt.exception; import org.springframework.context.annotati ...
- oracle调度中使用schedule管理调度
开始前,先说一句:作为dba应该禁止所有应用使用dbms_job. dbms_scheduler非常复杂,oracle在两本书中专门花费不少章节描述,这两本书分别是: Oracle® Database ...
- SpringBoot向outlook发送邮件
首先要登陆outlook邮箱,点击设置滑到最下面选择完整设置 进入后选择邮件->同步电子邮件 打开pop如上设置 下面是我的application.propertis设置 请填上自己的邮箱名与密 ...
- 新知识 HtMl 5
快要毕业了,即将走向实习岗位,但是这日子过的太无聊了,昨天逃课回宿舍打开电脑想看电影但是没什么好看的,于是上床睡觉了,越躺越无聊,然后爬了起来到学习图书馆找了本HTML5的课本,学习了起来(我感觉ht ...