Can I texture 3D objects with oil paint?
摘要
一位传统油画艺术家开发了开源工具Bob Jack Painter,通过实时摄像头将物理画布上的油画纹理映射到3D模型上,实现了用真实油画颜料纹理化数字3D物体的流程。
<p><a href="https://lobste.rs/s/hxkgmg/can_i_texture_3d_objects_with_oil_paint">Comments</a></p>
查看缓存全文
缓存时间: 2026/06/25 15:14
**TL;DR:** 一位传统油画艺术家通过实时摄像头捕获物理画布上的绘画,并将其映射到3D模型上,实现了用真实油画颜料纹理化数字3D物体的流程,并开源了工具“Bob Jack Painter”。
## 手绘3D艺术:从数字到传统
手绘3D艺术是一种让数字物体看起来像手绘作品而非立体3D的风格。通常,为这种风格的物体上色完全是数字化的——艺术家使用Blender等程序在数字模型上直接绘画。但传统媒介的支持者可能希望用油画颜料等物理材料来创作。然而,由于数字方法的便捷性,很少有人实际这么做。直到一位固执的传统艺术家决定挑战这个流程。
本文介绍了他如何通过自己编写的专用应用,实现将油画颜料绘制的纹理实时映射到3D模型上,从而用手绘油画完成3D纹理化。
## 3D模型与纹理基础
### 三角形与渲染
大多数3D模型由大量平坦的三角形表面组成,这些三角形通过数学技巧组合起来呈现光滑的曲面。显卡擅长在屏幕空间快速计算三角形的顶点位置并填充其内部的像素(即渲染)。如果只使用单一颜色,三角形看起来会很单调。
### 纹理映射的原理
显卡也能高效地扭曲图像。通过将每个三角形替换为一张经过旋转和裁剪的图像(纹理),可以给模型添加丰富的细节。渲染引擎通过UV贴图指定每个三角形对应纹理上的哪个区域:UV贴图是一个平面布局,其中每个三角形指向纹理上的一个子区域。渲染时,引擎切割纹理上的三角形并粘贴到模型对应的三角形上。关键点是:3D物体是通过一个单一的平面图像进行纹理化的,这恰好与油画创作方式类似。
## 实现传统油画纹理化的挑战
要制作油画纹理,最简单的方法是:打印出UV贴图,在上面绘画,然后拍照将图像映射回模型。但这种方法有严重缺陷——绘画时无法预览纹理包裹在3D模型上的效果。一旦绘画干燥后才发现不匹配,修改会非常困难(油画干燥时间很长)。因此,作者需要一个能实时显示绘画映射到模型效果的流程。
## 构建实时纹理系统:三个阶段
### 阶段一:实时摄像头流
网络摄像头自1993年以来已成为成熟的硬件。在现代设备上,通过几行代码就能捕获视频流。作者强调网络摄像头的隐私问题,建议不使用物理遮罩时应考虑购买镜头盖。这一步问题已解决。
### 阶段二:校正摄像头帧
摄像头不一定与画布正对,会导致纹理变形或背景干扰。需要校正:先用绘画中不包含的颜色标记画布的四个角点;然后测量摄像头图像中这些标记的质心位置;最后通过透视变换将画布区域拉伸至图像全尺寸。这种简单方法足以获得稳定的角点位置,使得画布图像与UV贴图对齐。
### 阶段三:实时渲染与显示
作者选择自行编写专用渲染引擎,而不是使用已知的Blender、Unity或Unreal Engine(这些工具不适合运行时读取和校正视频)。他使用C++和Vulkan图形API开发了“Bob Jack Painter”应用。该应用可以加载模型,设置角点检测颜色,实时显示经过校正的摄像头源,并将纹理包裹在模型上。只需按下按钮,就能看到手绘颜料在3D模型上的即时效果。
## 结果与开源
最终,作者成功使用油画颜料完成了3D模型的纹理化。这个过程虽然不如纯数字方法实用,但为坚持传统媒介的艺术家打开了新可能——例如创作数字绘画难以实现的物理质感。作者将Bob Jack Painter开源,并提供了Windows版本的发布链接(见GitHub仓库)。他还在TikTok和Instagram上分享了该项目制作过程中的短视频片段。
> 希望这个视频能激励你用传统方法制作自己的3D模型。我很想看看你们能用这个系统做出什么。
## 源视频
[Can I texture 3D objects with oil paint?](https://www.youtube.com/watch?v=fdI1ZJtAJmI) — 来自Lobste.rs的讨论
相似文章
@GitHub_Daily:制作独立游戏或3D打印模型,一旦模型建好并进入纹理步骤,主流软…
ArmorPaint是一款开源3D PBR纹理绘制工具,利用GPU加速,现在包括本地运行的AI节点,可从文本或照片生成纹理,兼容多个平台。
@0xCheshire: 又一个将照片转换成 Three.js 模型的开源工具包:img2threejs。 它还会不断对比渲染结果和原图,自动校准重建质量,尤其适合机械、设备、产品外壳等硬表面物体。 看样子大家做的方向都差不过。 不过,我更关心 AI 什么时候能一…
介绍了一个新的开源工具包 img2threejs,能够将照片转换为 Three.js 模型,并自动对比渲染结果与原图校准重建质量,尤其适合硬表面物体。
DALL·E: 推出外扩绘画功能
OpenAI 为 DALL·E 推出外扩绘画功能,使用户能够扩展生成或上传的图像,创建任意宽高比的大规模图像,同时保持阴影、反射和纹理的视觉一致性。
armory3d/armorpaint
ArmorPaint 是一个用于3D PBR纹理绘制的软件工具,其GitHub仓库提供了构建说明和面向开发者的分发注意事项。
@Huahuazo: 翻GitHub时挖到一个让人眼前一亮的项目——上传一张普通照片,它能自动识别物体结构、比例和材质,直接生成完整的3D模型。 说几个让我觉得路子很野的设计: 出厂自带“半成品”属性——生成的模型不是死板的照片贴图,而是包含清晰层级与碰撞体组…
介绍GitHub上的开源项目img2threejs,可上传普通照片自动生成带层级和碰撞体的代码化Three.js 3D模型,适合开发者和游戏制作人直接使用。