顶点颜色和材质的混合

C++写纹理贴图中OBJ文件和MTL(材质)文件 阅读详情

     最近在做项目的时候,碰到了使用顶点颜色没有效果的情况,研究了很久,终于把顶点颜色和渲染时的光照计算流程弄清楚了。

     首先,光照的计算与顶点的格式有关系,当顶点格式为D3DFVF_XYZ|D3DFVF_DIFFUSE时,因为没有法线信息,也无法进行光照计算,所以不管是否开启光照,渲染时都只会使用顶点颜色作为渲染的结果。

     针对于D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX3 类型的顶点,当设置D3DRS_LIGHTING为FALSE时,渲染会跳过光照计算的过程,直接将贴图纹理的颜色作为最终的结果,当设置D3DRS_LIGHTING为TRUE但是没有设置灯光(SetLightEnable)时,最后叠加的结果将会是黑色。

    在正常情况下,开启光照,同时设置好灯光的各项参数。在这种情况下,我们来探讨一下光照计算的流程。

    首先,对于每一个顶点来说,都有一个初始颜色: InitColr = globalAmbient*vMaterialAmbient+vMaterialEmissive;

    然后,分别计算Diffuse和Specular的颜色值,计算过程

  D3DRS_DIFFUSEMATERIALSOURCE

Diffuse color source for lighting calculations. Valid values are members of the D3DMATERIALCOLORSOURCE enumerated type. The default value is D3DMCS_COLOR1. The value for this render state is used only if the D3DRS_COLORVERTEX render state is set to TRUE.

D3DRS_SPECULARMATERIALSOURCE

Specular color source for lighting calculations. Valid values are members of the D3DMATERIALCOLORSOURCE enumerated type. The default value is D3DMCS_COLOR2.

D3DRS_AMBIENTMATERIALSOURCE

Ambient color source for lighting calculations. Valid values are members of the D3DMATERIALCOLORSOURCE enumerated type. The default value is D3DMCS_MATERIAL.

D3DRS_EMISSIVEMATERIALSOURCE

Emissive color source for lighting calculations. Valid values are members of the D3DMATERIALCOLORSOURCE enumerated type. The default value is D3DMCS_MATERIAL.

 

typedef enum _D3DMATERIALCOLORSOURCE {
    D3DMCS_MATERIAL = 0,
    D3DMCS_COLOR1 = 1,
    D3DMCS_COLOR2 = 2,
    D3DMCS_FORCE_DWORD = 0x7fffffff
} D3DMATERIALCOLORSOURCE;

 

UE风格化day21-顶点颜色绘制/修改网格体材质混合 通过顶点颜色绘制混合网格体材质 阅读详情

相关推荐

UE5顶点绘制进阶:告别Bridge自动混合,手控Megascans材质融合

在实时渲染和游戏开发中,材质混合是提升场景真实感的核心技术。其原理是通过算法或数据控制多种表面材质在同一模型上的分布与过渡。传统自动化工具虽快,但缺乏艺术可控性,难以实现符合特定叙事需求的细节。顶点绘制技术将控制权交还给开发者,通过在模型顶点存储颜色信息作为混合蒙版,实现了像素级的手动控制。这项技术的价值在于其空间一致性和艺术自由度,不受UV拉伸影响,能稳定表现复杂渐变。它广泛应用于需要高精度材质融合的场景,如写实地形、角色服装和建筑表面。本文聚焦于在UE5中,利用顶点绘制精细融合Megascans扫描材质

weixin_29010003的博客 263

Obj 的网格 要在 3D Max 中渲染出顶点颜色

目前所知, Obj 没有顶点颜色信息,只有材质信息, 而材质信息是针对三角面, 而不是针对顶点。具体可参考Obj 格式说明。 想要在自己程序中设置好顶点颜色,然后放到 3D Max 中进行渲染,需要把 OBJ保存成其它的格式,将顶点颜色信息保存其中。其中有很多选择,VRML 是其中一种,3D Max 也是支持这种格式。  下图即为按照顶点颜色进行绘制的结果, 模型一共32个顶点

Vast_Sea的专栏 6627

UE4学习笔记 09

泥土材质-三层混合纹理 新建材质,使用插值节点混合 泥土的平铺纹理和纹路纹理 然后使用Vertex Color顶点颜色节点控制线性插值节点的Alpha通道 顶点颜色节点可以获取模型的顶点颜色,配合Paint工具使用 使用Red颜色通道作为灰度值控制平铺纹理和纹路纹理的混合 在关卡中将材质应用到模型 使用Paint工具进行绘制 设置Red通道进行绘制 可以看到绘制过的区域显示为纹路纹理,未绘制的为平铺纹理 同理可以添加第三张纹理,石块纹理 顶点颜色使用Green颜色通道 绘制时需设置Green通道,

qq_36560524的博客 607

读取obj顶点颜色 vertex color渲染并保存图片

综述 该程序是在我之前的项目中修改的。 因为3dmax不支持顶点色彩的obj文件渲染,而meshlabserver不支持导出图片的批处理脚本。所以只好手写openGL渲染。 这个项目的更加基本的版本是我之前的写的一个程序: openGL-读取off、stl、obj文件并旋转平移缩放操作-Zhiyang 读取顶点色彩信息主要看readerOBJ即可。 保存图片的关键函数是: void PPMWr...

FrankDura的博客 7463

ThreeJS入门(035):THREE.LineBasicMaterial 知识详解,示例代码

`THREE.LineBasicMaterial` 是 Three.js 中用于渲染线条的一种材质类型。这种材质非常基础,它主要用来绘制简单的线段,支持基本的颜色设置和透明度调整。`THREE.LineBasicMaterial` 不支持光照模型,因此它不会根据光源的位置改变颜色或亮度。下面详细介绍 `THREE.LineBasicMaterial` 的特性和用法。

大剑师兰特的GIS世界 1226

ThreeJS入门(031):THREE.LineDashedMaterial 知识详解,示例代码

`THREE.LineDashedMaterial` 的材质类型,用于创建虚线线条效果。`THREE.LineDashedMaterial` 是 Three.js 为了简化创建虚线线条而提供的一个方便的材质类型,它允许用户通过简单的属性配置来实现虚线效果,而不需要手动编写着色器。

大剑师兰特的GIS世界 1198

Obj模型功能完善(物体材质,光照,法线贴图).Cg着色语言+OpenTK+F#实现.

  这篇文章给大家讲Obj模型里一些基本功能的完善,包含Cg着色语言,矩阵转换,光照,多重纹理,法线贴图的运用.   在上篇中,我们用GLSL实现了基本的phong光照,这里用Cg着色语言来实现另一钟Blinn-phong光照模型,平常我们说语言只是手段,关键是怎么运用,这个用在如一些高级编程语言上,我们或多或少有不同想法,但是在着色语言上,我认为太对了.因语法都是基于C,C++来的,并且去除很...

weixin_34192993的博客 604

APB Timer验证环境搭建——学习笔记(6)

(1)为RELOAD VALUE配置初始值32'h8000_0000,设定边界值32'h4000_0000,可以看到减到想要的边界值的时候,counter重新加载RELOAD VALUE,重新开始计数;这根线,统计等待到中断的次数,与理论值做。(2)设定Reload value。(1)由于counter。recount总共次数;

qq_41651535的博客 497

3D 顶点颜色 纹理 材质之间的关系

转载自:顶点颜色,纹理以及材质关系 顶点色, 纹理色,材质色。 三色的区别挺大,尤其在固定管线中。 最简单的例子,在固定管线中,你把光打开后,顶点色失去作用,其最终颜色去决定于材质色+纹理色+光色。 在固定管线中,如果关闭光,那材质色失去作用(没有光, 光向量×材质法向量 也就没得乘了 ),纹理色还是去作用的。 如果是可编程管线,那就无所谓了,你自己可以控制算法。

XP_lmq的专栏 3555

GAMIT基线解算实战:从RINEX数据准备到精度报告解读(附2024年tables更新攻略)

本文详细解析了2024年GAMIT基线解算全流程,从RINEX数据准备到精度报告解读,特别更新了tables配置攻略。涵盖工程目录设计、数据预处理、关键配置文件更新及基线解算策略优化,帮助用户掌握高精度GNSS数据处理技术,提升解算效率和结果可靠性。

weixin_42520374的博客 305

做小程序支付时,我是怎么被“虚拟支付”绊了一跤的

微信小程序支付开发中,普通支付与虚拟支付存在本质差异。开发者常误将虚拟权益(会员、点数等)当作普通商品支付,导致审核失败。两者在审核关注点、结算方式、API调用及平台政策上都截然不同。关键点在于:1)先明确交易对象类型;2)产品命名需真实反映权益性质;3)支付成功≠业务完成;4)审核说明要详细描述交付逻辑;5)避免依赖过时规则。正确顺序应是:判断商品属性→选择支付类型→设计订单系统→准备审核材料。这个认知差异比技术实现更重要,提前理解平台规则可大幅减少返工。

zhurizhe71的学习之路 2586

OC怎么使用c4d顶点贴图实现两个材质的变化?材质渐变动画​

《C4D的十万个为什么》首发于 公众号:苦七君 免费搜索查看更多问题:kuqijun.com 问题: OC怎么使用c4d顶点贴图实现两个材质的变化? 答案: 第一步 创建顶点贴图 先给一个模型创建顶点贴图,需要注意以下几点。1、模型必须C掉;2、选择模型点、线、面三种模式下任一种。这样在选择--设置顶点权重 按钮才可以使用。弹出的窗口,设置顶点权重数值默认为0 确定,顶点贴图颜色为红色。 第二步 为顶点贴图设置域生长动画 点击第一步创建的顶点贴图标签,点击 基本——使用域——域 冻

kuqijun2的博客 3897

深度学习batch、batch_size、epoch、iteration以及小样本中episode、support set、query set关系

训练整个数据集是epoch、把数据集分为多少小块就是batch,每个小块(batch)多少个数据就是batch_size,整个数据集需要训练多少轮是iteration

qq_42740834的博客 1610

Blender For Unreal Engine材质和顶点颜色导出最佳实践

Blender For Unreal Engine Addons是一款专为Blender到Unreal Engine资产导出打造的强大工具,能够帮助开发者高效处理材质和顶点颜色等关键资源的导出流程,显著提升工作效率。 ## 材质导出核心配置指南 材质的正确导出是确保资产在Unreal Engine中呈现预期视觉效果的关键步骤。在Blender中完成材质创建后,需通过插件的材质属性面板进行精细化

gitblog_00907的博客 345

BIM模型导入SuperMap

目录 一、超图 BIM插件安装 1.1 插件下载 1.2 安装 二、BIM模型导出 2.1 Revit插件导出 2.2 SuperMap导入工具 三、SuperMap BIM数据处理与服务发布 四、SuperMap三维数据处理中关于模型高程修改方法 一、超图 BIM插件安装 1.1 插件下载 下载链接:http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?tt=ProductAAS&id=134 1..

爱晒太阳的风 3599

Three 之 three.js (webgl)绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool

Three js 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。本节介绍, three.js (webgl) 中绘制物体模型尺寸虚线包围框工具简单封装 DashLinesBoxTool,主要是给实物绘制线框,有点像AI 识别正方形包裹框的效果。其中,如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。

仙魁XAN 2106

阿赵UE学习笔记——10、Blender材质和绘制网格体

之前介绍了虚幻引擎的材质和材质实例。这次来介绍一个比较有趣的内置的Blender材质。

阿赵的博客 1907

OCR技术解析:用Tesseract和PaddleOCR识别文本

OCR技术解析:用Tesseract和PaddleOCR识别文本 ,人工智能,计算机视觉,大模型,AI,光学字符识别(Optical Character Recognition,简称 OCR)是一项将图片、扫描件等文档中的文字信息转换为可编辑文本的技术。在数字化时代,OCR 技术广泛应用于文档处理、车牌识别、身份证识别、古籍数字化等领域,极大地提高了文字信息处理的效率。Tesseract 和 PaddleOCR 是两款极具代表性的 OCR 工具。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

OpenGL——材质、光照与混合

/*******************************************************************/ 本文总结自《OpenGL入门教程》,大家可以下载。 /*******************************************************************/   OpenGL场景中模型颜色的产生,大致为如下的流程图所描

小熊不去实验室 3604

Spring AI提示词模板应用

本文介绍了使用SpringAI提示词模板的配置方法,主要步骤包括:1)在JDK17和SpringBoot3.4.4环境下引入spring-ai-alibaba1.0.0.2依赖;2)配置application.yml文件;3)创建测试控制器类处理提示词模板(.st文件);4)通过模板变量动态生成AI回复内容。演示了如何通过@RequestParam设置默认参数,实现无需前端传参即可测试AI回复功能,最终完成了一个SpringAI提示词模板的应用Demo。

wjianwei666的专栏 198

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ShaderGraph节点解析(三十一):顶点颜色节点(Vertex Color Node)详解

《顶点颜色节点在Unity着色器中的应用解析》摘要:顶点颜色节点是Unity ShaderGraph中获取网格顶点颜色数据的关键工具,通过RGBA格式控制材质细节和动态效果。其技术原理基于顶点数据存储和线性插值,可实现平滑过渡着色。主要应用场景包括地形纹理混合、角色受伤区域高亮以及无纹理程序化着色。使用技巧着重颜色通道优化分配和与其他节点的协同配合,如UV和法线节点。该节点优势在于资源节约(无需额外纹理)、精细控制和性能高效,特别适用于移动端和VR场景,未来可拓展至动态植被等更复杂应用场景。

分享知识,拥抱变化 1458

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

UE4顶点绘制材质节点连接笔记

使用到的材质节点 线性差值节点,Alpha连接你需要使用的通道(使用Vertex Color节点),AB就是连接拿来顶点绘制的贴图,如果需要3个以上贴图使用节点往后叠加连接就可以,例: 比如如果需要让草地根据砖缝绘制,把上面的线性差值节点换成这个就可以,但是需要一张高度图连接节点上对应的接口(第四个Height Texture),第五个接口为对比度(可以理解为过渡效果)给个Param调整数值就可以,其他的按之前的节点连接即可。 下图为让草地一直朝上的节点连接方式(比如石头) ...

zzbv_v的博客 3839

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

8.2 使用Alpha混合技术

Let’s start! 在介绍深度测试的时候说到过Alpha混合的作用,就是为了实现游戏或其他场景中透明物体的遮挡问题:我们需要遮挡,但是并未看不见被遮挡的物体,有时,透过一块干净的玻璃观察物体,甚至尤其的清楚! 有了使用深度测试技术的基础,在学习Alpha混合技术便轻松一些,但是二者只是在使用方法上类似,真正的原理却大不相同。例如:深度测试是发生在深度缓冲区当中,而Alpha混合则是发生在...

razorEdge的博客 2659

UE4 Vertex Painting 制作路面积水效果

1. 整体效果:先来张效果图感受一下。嗯,还不错嘛。 图1:效果图 2、材质结点:看一下主要的材质蓝图,没办法怎么都感觉很乱。 图2:材质蓝图 如图中所示主要使用:基础颜色、粗糙和法线三个结点。 基础颜色就是一张柏油路的贴图,所有主要处理部分是在粗糙度和法线。 主要思路就是使用顶点颜色混合地面和水面的贴图和法线,粗糙度对应的是地面的湿度。 本文主要介绍的是下面这些材质...

weixin_30414305的博客 2854

D3D9学习笔记(六) 坐标系统及坐标变换 几何体

6.1坐标系统 D3D9采用左手系,即Z轴朝里 平面法向也是用右手 6.2生成和设置坐标转换矩阵 world trans D3DXMatrixRotationX D3DXMatrixTranslation。。 view trans D3DXMatrixLookAtLH   优化 频繁的set 变换矩阵的开销很大,因此可以本地记录world  view矩阵,然后只set 一个整体的

leon 2600

glsurfaceview 和 open gl

一、OpenGL概述        Open GL 是3D图像处理技术的标准技术,其通过将三维直观图形绘制在三维坐标系上的表面顶点上,通过模拟现实事件的光照,材质等操作,然后结合物体本身的运动属于,结合物体本身的颜色属性(Texture),而进行绘制的接口操作,最后,上面的运算函数将运算结果现实在二维的屏幕控件上。简单介绍下其中的处理技术:      1、多边形顶点绘制,几乎很多入门级的

android 架构和设计 1181
上一篇: CString 操作指南
下一篇: 顶点颜色在光照计算中的作用
rootvy
博客等级 码龄21年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值