• 打造自己的3D模型AI 自动纹理工具


    在线工具推荐: 三维数字孪生场景工具  -  GLTF/GLB在线编辑器  -  Three.js AI自动纹理化开发  YOLO 虚幻合成数据生成器  -  3D模型在线转换  -   3D模型预览图生成服务

    为 3D 模型创建纹理可能比您想象的要容易。虽然注意细节很重要,但有很多方法可以制作出出色的纹理。您可以使用 3D 建模软件,但 Photoshop 和 Gimp 等 2D 程序也可以为您提供帮助。 如果您无法从头开始构思纹理,则可以将真实世界的图像和绘图与 2D 工具一起使用。在这里,您将学习为 3D 模型创建纹理的不同技术。

    纹理映射

    要创建类似于现实生活的表面,您需要转向纹理映射。这个过程类似于在白盒子中添加装饰纸。在 3D 中,纹理映射是向多边形对象添加图形的过程。这些图形可以是任何东西,从照片到原始设计。纹理可以帮助你的对象老化,并赋予它们更多的吸引力和真实感。

    Texture_Mapping

    着色

    着色器描述了对象上的整个材质、光线的反射方式、吸收方式、半透明性和凹凸贴图,您将在本文后面了解这些内容。着色器和纹理经常会混淆,但纹理是连接到着色器以赋予 3D 对象特定外观的东西。

    着色

    UV映射

    3D 对象有很多面,计算机不知道如何正确地将 2D 纹理放在 3D 对象上。UV 贴图基本上是拉伸成平面 3D 图像的 2D 模型。多边形对象上的每个面都与 UV 贴图上的一个面相关联。现在,将 2D 纹理放置在 2D 对象的新 3D 表示上要容易得多。

    UV_Map

    镜面反射率

    镜面反射率定义了表面反射光的方式。它基本上是纹理对光源的反射,并营造出闪亮的外观。拥有正确的镜面反射率对于定义 3D 对象的材料构成非常重要。例如,闪亮的金属材料将具有高水平的反射率,而像水泥这样的平坦质地则不会。

    镜面反射率

    法线

    法线是一条不可见的线,直接从多边形面或 NURBS 面片中伸出。这些法线可帮助 3D 应用程序确定曲面的哪一侧是正面,哪一侧是背面。正确的法线方向很重要,尤其是在渲染时,因为大多数情况下,渲染引擎不会渲染向后的法线。

    法线

    凹凸图

    凹凸贴图在纹理上给人一种深度或浮雕的错觉,而不会大大增加渲染时间。例如,一分钱上的凸起表面可以通过使用凹凸贴图来伪造。计算机通过读取图形上的黑、白、灰度数据来确定图像上需要凸起的区域。

    Bump_Map

    透明度地图

    透明度贴图是灰度纹理,它使用黑白值来表示对象材质上的透明或不透明度区域。例如,在对围栏进行建模时,您可以使用黑白纹理来确定哪些区域应保持不透明,哪些区域应保持透明,而不是对每个单独的链节进行建模,这将花费大量时间。

    Transparency_Map

    法线贴图

    法线贴图可以产生细节的错觉,而不必依赖高多边形计数。例如,可以将角色细节化到像ZBrush这样的雕刻程序中,并且所有信息都可以烘焙到法线贴图上并转移到低多边形角色上,从而在不增加模型的实际多边形数量的情况下产生细节的错觉。游戏工作室经常使用法线贴图,因为他们需要保持在紧张的多边形预算范围内,但仍然需要高水平的细节。

    Normal_Maps

    法线贴图 VS.凹凸图

    法线贴图和凹凸贴图的相似之处在于,它们都会影响几何体的法线,并创建细节错觉,而不必依赖额外的几何体。它们之间的最大区别在于,凹凸贴图仅使用黑白值对高度信息进行编码,而法线贴图则使用 RGB 值来表示曲面法线的方向。法线贴图中红色、绿色和蓝色通道中的信息与曲面的 X、Y 和 Z 方向相对应。法线贴图通常可以将更详细的信息放到曲面上。

    在典型的 3D 场景中,您需要对对象进行着色、纹理和照明,以创建所需的确切外观,然后进行渲染。为了缩短渲染时间,您可以将所有材质、纹理和照明信息烘焙到图像文件中。例如,您可以将所有光照信息直接烘焙到现有纹理上,渲染一次,然后删除场景中使用的实际光源。这对游戏来说非常有用,因为在每个新帧中都需要重新计算光线。

    Light_Baking

    现在,您已经熟悉了这些常见的纹理技术,距离为 3D 模型构建纹理又近了一步。但是离使用这些技术的还是有一些差距的。我们该用什么样的工具 去使用这这些技术来为我们的3D模型进行纹理贴图,为我们的模型制作出更出色的纹理。

    AI 自动纹理工具

    DreamTexture.js自动纹理化开发包 是面向 three.js 开发者的 3D 模型纹理自动生成与设置开发包,可以为 webGL 应用增加 3D 模型的快速自动纹理化能力。用户只需给出提示词,就可以生成相应的纹理贴图,并自动映射到3D模型上,以下是使用DreamTexture.js自动纹理化工具为模型设置纹理贴图的示例:

    古典建筑

    动物

    植物

    打造自己的3D模型纹理工具

    了解了 DreamTexture.js自动纹理化开发包 的用途,那么我们如何打造属于自己的3D纹理工具呢?

    首先到DreamTexture.js自动纹理化开发包 - NSDT  网站下载开发包,开发包的内容结构如下:

    开发包文件说明
    src/源码目录
    example/DreamTexture.js 使用示例目录
    dream-texture.cjscjs 格式库文件
    dream-texture.esmesm 格式库文件
    dream-texture.umdumd 格式库文件
    stable-diffusion-guide.md用于 DreamTexture.js 的稳定扩散服务安装指南
    LICENSE.md开发包许可协议文件

    第二步:下载好了开发包后,接下来就是参考开发包中的稳定扩散服务安装指南部署自己的 stable diffusion api 服务,支持 windows 和 Linux。

    第三步:安装 three.js 开发环境,安装完成后需要引入 DreamTexture.js 库文件,以 ESM 库为例,引入代码如下:

    1. import * as THREE from 'three';
    2. import DreamTexture from './dream-texture.esm.min';

    现在创建一个场景,在场景中导入 GLTF 模型 ,并可以适当的旋转或移动模型:

    1. //将模型导入到场景
    2. const gltfLoader = new THREE.GLTFLoader();
    3. gltfLoader.load('monkey.glb', async (e) => {
    4. scene.add(e.scene);
    5. });
    6. // 将模型旋转到任何你想要的角度!
    7. box.rotation.y = -Math.PI / 4;

    然后实例化一个 DreamTexture 对象,注意要在参数中指定你的稳定扩散 API 服务的 URL:

    1. //初始化DreamTexture对象,传入您的stable diffusion api 地址
    2. const dt = new DreamTexture({
    3. baseUrl: 'http://127.0.0.1:7860', //stable diffusion url
    4. });

    现在就可以调用 DreamTexture 对象的 setTexture 方法传入提示词等参数, 让 AI 模型自动生成生成一张纹理图片,并投射到模型上,代码如下:

    1. //编写提示词和其他参数
    2. // 成功启动stable diffusion api后,可在 http://127.0.0.1:7860/docs 查看文档
    3. const params = {
    4. prompt: 'monkey head, Brown hair, cartoon',//描述所需图像的细节越详细,Stable Diffusion生成效果越接近描述,较少描述则更具创意性。
    5. negative_prompt: 'blurry',//不希望Stable Diffusion生成的内容,用于排除不需要的元素。
    6. denoising_strength: 0.85,// 去噪强度
    7. cfg_scale: 15,//文字CFG比例
    8. image_cfg_scale: 7,//图片CFG比例
    9. steps: 10,//采样步数
    10. sampler_index: 'DPM++ SDE Karras',
    11. sampler_name: '',
    12. };
    13. dt.setTexture(scene, params).then((res) => {
    14. console.log('纹理添加成功!');
    15. });

    示例效果如下:

    aa1

    图一为原始模型, 图二图三为贴图后的模型。图二提示词:Realistic , photography, bottle, porcelain;图三:将'porcelain'换为'glass'

    简单几步就可以打造一个AI 驱动的3D模型自动纹理话工具,再也不用为3D模型的纹理制作头疼了,只需输入合适的提示词,就可以快速的为3D模型设置好纹理贴图,省事有省力!

    转载:打造自己的3D模型AI 自动纹理工具 (mvrlink.com)

  • 相关阅读:
    代理模式详解
    Oracle/PLSQL: Round Function (with numbers)
    JS-树:深度优先搜索与广度优先搜索
    一款开源的文件搜索神器,终于不用记 find 命令了
    redis的key超时策略和key淘汰机制(面试题详解)
    传智健康_第5章 预约管理-预约设置
    SwiftUI 让用户更便捷在 App Store 为 App 打分和评价的超详细介绍
    STM32进行LVGL裸机移植
    C语言学习记录(十二)之字符串和字符串函数
    小小发票拦住出海“巨头”,合合信息智能文档处理技术助力企业重塑财务管理流程
  • 原文地址:https://blog.csdn.net/ygtu2018/article/details/134512969