自制简易的软光栅渲染器(5)
playerzhou
无回复
项目地址:https://github.com/OmegaZhou/SimpleRenderer
简单的纹理映射
- 由于之前一直是采用随机颜色来绘制三角形,视觉效果比较差,然后tiny renderer的第三节课也给了一个小作业,完成人像模型的纹理映射
- 这里我先假定纹理图片只有一张,具体流程即为
- 上传纹理图片文件
- 将图片文件转为
HTMLImageElement
对象 - 使用canvas提供的API将其转换为
ImageData
- 再将
ImageData
转换为我所使用的Color[][]
对象 - 根据获得的
Color[][]
对象构造出纹理类
- 接下来修改相应函数,使像素点的颜色不再使随机的
- 由于obj文件只提供了三角形顶点的纹理坐标,对于其他点,则采用插值的方式获取
- 这里我分别尝试了两种插值方式
- 一种是对颜色的插值,先获取各顶点的颜色,再对颜色进行插值操作
- 另一种是对纹理坐标的插值,对各顶点纹理坐标进行插值后再获取纹理颜色
- 最终两种方式的效果分别如下
- 对颜色的插值
- 对纹理坐标的插值
- 对颜色的插值
来一发吐槽