图形学 日志

自制简易的软光栅渲染器(5)

playerzhou 无回复

项目地址:https://github.com/OmegaZhou/SimpleRenderer ;

简单的纹理映射

  • 由于之前一直是采用随机颜色来绘制三角形,视觉效果比较差,然后tiny renderer的第三节课也给了一个小作业,完成人像模型的纹理映射
  • 这里我先假定纹理图片只有一张,具体流程即为
    1. 上传纹理图片文件
    2. 将图片文件转为HTMLImageElement对象
    3. 使用canvas提供的API将其转换为ImageData
    4. 再将ImageData转换为我所使用的Color[][]对象
    5. 根据获得的Color[][]对象构造出纹理类
  • 接下来修改相应函数,使像素点的颜色不再使随机的
  • 由于obj文件只提供了三角形顶点的纹理坐标,对于其他点,则采用插值的方式获取
  • 这里我分别尝试了两种插值方式
    • 一种是对颜色的插值,先获取各顶点的颜色,再对颜色进行插值操作
    • 另一种是对纹理坐标的插值,对各顶点纹理坐标进行插值后再获取纹理颜色
  • 最终两种方式的效果分别如下
    • 对颜色的插值
    • 对纹理坐标的插值

来一发吐槽

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据