image - 从顶点颜色创建图像纹理的算法
问题描述
- 我知道我可以通过获取顶点的相应 uv 坐标来从网格的 3d 空间到 2d 空间。
- 当我转换到 uv 空间时,每个顶点都会有它的颜色,我可以将颜色放在像素位置,就像 uv 坐标为特定顶点返回的那样,但问题是我如何导出它们之间的像素,我想要一个平滑的渐变。
- 例如,在 uv 坐标 (0.5,0.5)->(u,v) 处的颜色值为 [30,40,50]->(RGB),在 [0.75,0.75] 处其 [70,80,90 ] 假设有三个顶点,在 [0.25.0.6] 处还有一个顶点为 [10,20,30],我如何得出这三个 uv/顶点坐标填充的区域上的颜色,我的意思是中间像素值?
解决方案
只需在 GPU 上绘制此网格。您已经知道可以用 替换顶点positions
,UVs
以便在纹理空间上表示它。
保持顶点颜色不变并在目标纹理上绘制此网格,GPU 将为您绘制的每个三角形进行颜色插值。
请记住,如果两个或多个三角形共享相同的纹理空间,那么结果将取决于三角形顺序。
推荐阅读
- reactjs - 如何使用材料表反应仅在编辑或创建模式下显示隐藏列?
- angular - 模板引用变量:分配 ngForm 和 ngModel
- android - 通过 ACTION_VIEW 意图将图像从内部存储保存到图库
- c - fdim 的首字母缩略词代表什么?
- javascript - javascript如何将“空”插入数组?
- android-studio - 尝试在 Android Studio 3.5.3 中创建新项目时出现很多错误
- vb.net - 在文件夹日期上使用获取文本后,如何获得正确的日期格式?
- javascript - 切换数组值的最快方法
- node.js - 如何在谷歌云功能中正确路由所有 nodejs express 应用程序请求
- java - System.out.println("Serializable:" + arrayList instanceof Serializable) 没有打印 'Serializable' 字