手把手教你使用人工智能生成游戏 3D 素材
引言
生成式 AI 已成为游戏开发中艺术工作流的重要组成部分。然而,正如我在 之前的文章 中描述的,从文本到 3D 的实用性仍落后于 2D。不过,这种情况正在改变。本文我们将重新审视 3D 素材生成的实用工作流程,并逐步了解如何将生成型 AI 集成到 PS1 风格的 3D 工作流中。

为什么选择 PS1 风格?因为它对当前文本到 3D 模型的低保真度更为宽容,使我们能够以尽可能少的努力从文本转换为可用的 3D 素材。
预备知识
本教程假设你具备一些 Blender 和 3D 概念的基本知识,例如材质和 UV 映射。
第一步:生成 3D 模型
首先访问 Shap-E Hugging Face Space 应用。这个 Space 应用使用 OpenAI 最新的扩散模型 Shap-E model 从文本生成 3D 模型。
首先访问 Shap-E Hugging Face Space 应用。这个 Space 应用使用 OpenAI 最新的扩散模型 Shap-E model 从文本生成 3D 模型。
输入 "Dilapidated Shack" 作为你的提示并点击 'Generate'。当你对模型满意时,下载它以进行下一步。

第二步:导入并精简模型
接下来,打开 Blender(版本 3.1 或更高)。转到 File -> Import -> GLTF 2.0,并导入你下载的文件。你可能会注意到,该模型的多边形数量远远超过了许多实际应用(如游戏)的推荐数量。

要减少多边形数量,请选择你的模型,导航到 Modifiers,并选择 "Decimate" 修饰符。将比率调整为较低的数字(例如 0.02)。这可能看起来不太好。然而,在本教程中,我们将接受低保真度。
第三步:安装 Dream Textures
为了给我们的模型添加纹理,我们将使用 Dream Textures,这是一个用于 Blender 的稳定扩散纹理生成器。按照 官方仓库 上的说明下载并安装插件。

安装并启用后,打开插件首选项。搜索并下载 texture-diffusion 模型。
第四步:生成纹理
让我们生成一个自定义纹理。在 Blender 中打开 UV 编辑器,按 'N' 打开属性菜单。点击 'Dream' 标签并选择 texture-diffusion 模型。将 Prompt 设置为 'texture'、Seamless 设置为 'both'。这将确保生成的图像是无缝纹理。
在 'subject' 下,输入你想要的纹理,例如 'Wood Wall',然后点击 'Generate'。当你对结果满意时,为其命名并保存。

要应用纹理,请选择你的模型并导航到 'Material'。添加新材料,在 'base color' 下点击点并选择 'Image Texture'。最后,选择你新生成的纹理。
第五步:UV 映射
接下来是 UV 映射,它将我们的 2D 纹理包裹在 3D 模型周围。选择你的模型,按 'Tab' 进入编辑模式。然后,按 'U' 展开模型并选择 'Smart UV Project'。
要预览你的纹理模型,请切换到渲染视图(按住 'Z' 并选择 'Rendered')。你可以放大 UV 映射,使其在模型上无缝平铺。请记住,我们的目标是复古的 PS1 风格,所以不要做得太好。

第六步:导出模型
当您对模型感到满意时,就可以导出它了。使用 File -> Export -> FBX,这个 3D 素材就生成了。
第七步:在 Unity 中导入
最后,让我们看看我们的模型在实际中的效果。将其导入 Unity 或你选择的游戏引擎中。为了重现怀旧的 PS1 美学,我用自定义顶点照明、无阴影、大量雾气和故障后处理进行了定制。你可以在 这里 了解更多关于重现 PS1 美学的信息。
现在我们就拥有了一个在虚拟环境中的低保真、纹理 3D 模型!

总结
关于如何使用生成型 AI 工作流程创建实用 3D 素材的教程就此结束。虽然结果保真度不高,但潜力巨大:通过足够的努力,这种方法可以用来生成一个低保真风格的无限世界。随着这些模型的改进,将这些技术转移到高保真或逼真的风格将会成为可能!
英文原文: https://hf.co/blog/3d-assets
原文作者: Dylan Ebert
译者: Luke, Hugging Face Fellow
手把手教你使用人工智能生成游戏 3D 素材的更多相关文章
- Python数据分析:手把手教你用Pandas生成可视化图表
大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...
- 超详细!手把手教你用 JaCoCo 生成单测覆盖率报告!
我们都知道 Spock 是一个单测框架,其特点是语法简明.但当我们使用 Spock 写了一堆单元测试之后,如何生成对应的单测覆盖率报告呢?一般来说,我们会使用两个插件来一起完成单测覆盖率报告的生成,分 ...
- 手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
/1 前言/ 在家闲着,做个小项目,基于Python,实现一个语聊小机器人,分享给大家.项目整体比较简单,官方文档介绍的非常详细,可快速上手. /2 目标/ 将图灵机器人放到桌面,实现工作助手/陪聊功 ...
- 手把手教你玩转CSS3 3D技术
手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...
- 手把手教你玩转 CSS3 3D 技术
css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...
- 手把手教你搭建Pytest+Allure2.X环境详细教程,生成让你一见钟情的测试报告(非常详细,非常实用)
简介 宏哥之前在做接口自动化的时候,用的测试报告是HTMLTestRunner,虽说自定义模板后能满足基本诉求,但是仍显得不够档次,高端,大气,遂想用其他优秀的report框架替换之.一次偶然的机会, ...
- 手把手教你如何优雅的使用Aop记录带参数的复杂Web接口日志
前言 不久前,因为需求的原因,需要实现一个操作日志.几乎每一个接口被调用后,都要记录一条跟这个参数挂钩的特定的日志到数据库.举个例子,就比如禁言操作,日志中需要记录因为什么禁言,被禁言的人的id和各种 ...
- 手把手教你如何使用Cocos2d Console 进行html5项目发布
手把手教你如何使用Cocos2d Console 进行html5项目发布 1.首先需要先安装Cocos2d Console运行需要的工具. 详情参见 这篇文章 http://www.cocoach ...
- 如何学好游戏3D引擎编程
注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才 ...
- 手把手教你做JavaWeb项目:登录模块
现如今,无论是客户端还是移动端,无论是游戏登陆还是社交平台登陆,无处不在的“登陆”.那么你知道怎么制作吗?今天就为你娓娓道来: 用户登录 在各大信息管理系统中,登录功能是必不可少的,他的作用就是验证用 ...
随机推荐
- 2021-11-05:摆动排序 II。给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以
2021-11-05:摆动排序 II.给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]- 的顺序.你可以假设所有 ...
- SpringMVC 后台从前端获取单个参数
1.编写web.xml(模板) 2.springmvc配置文件 3.编写对应数据库字段的pojo实体类 @Data @AllArgsConstructor @NoArgsConstructor pub ...
- 代码随想录算法训练营Day28 回溯算法 | 491.递增子序列 46.全排列 47.全排列 II
代码随想录算法训练营 491.递增子序列 题目链接:491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] ...
- 代码随想录算法训练营Day15 二叉树| 层序遍历 10 226.翻转二叉树 101.对称二叉树 2
代码随想录算法训练营 代码随想录算法训练营Day15 二叉树| 层序遍历 10 226.翻转二叉树 101.对称二叉树 2 层序遍历10 题目链接:层序遍历10 给你二叉树的根节点 root ,返回其 ...
- 02.详解盒子模型&选择器初识
1.Div盒子 用div做圆 能否优化,去掉div之间的距离?margin属性 用表格做圆 2.CSS样式 总结:需要注意的是行级标签设置宽高不会生效 小练习:使用span标签 3.CSS选择器演示及 ...
- R 包初学者指南
由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 基于 11 个最常见的用户问题介绍 R 软件包. R 包是由社区开发 (developed b ...
- 为什么 Biopython 的在线 BLAST 这么慢?
用过网页版本 BLAST 的童鞋都会发现,提交的序列比对往往在几分钟,甚至几十秒就可以得到比对的结果:而通过调用 API 却要花费几十分钟或者更长的时间!这到底是为什么呢? NCBIWWW 基本用法 ...
- AI 协助办公 |记一次用 GPT-4 写一个消息同步 App
GPT-4 最近风头正劲,作为 NebulaGraph 的研发人员的我自然是跟进新技术步伐.恰好,现在有一个将 Slack channel 消息同步到其他 IM 的需求,看看 GPT-4 能不能帮我完 ...
- 【论文阅读】Pyramid Scene Parsing Network
解决的问题:(FCN) Mismatched Relationship: 匹配关系错误,如将在水中的船识别为车. Confusion Categories: 模糊的分类,如 hill 和 mounta ...
- string类型可以作为lock的锁对象吗
lock 关键字介绍 lock 关键字是用于在多线程编程中实现同步和互斥访问的关键字.它的作用是确保共享资源在任意时刻只能被一个线程访问,从而避免出现竞态条件(race condition)和数据不一 ...