文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT

news2025/4/13 0:37:53

北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT,通过文本问答方式就能创建高精准3D模型。

据悉,3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块,简化了3D建模的开发流程实现技术民主化。

但3D-GPT与现有的文本生成3D模型方法大有不同,生成过程是可以操控函数进行3D建模,而不是常规的3D神经元表征,同时可与Blender(开源三维软件)实现无缝集成。这极大提升了模型的灵活性和准确性。

论文地址:https://arxiv.org/abs/2310.12945

Github(即将发布):https://github.com/Chuny1/3DGPT

在这里插入图片描述

随着Meta提出元宇宙概念后,全球对高保真的3D内容需求激增。然而,传统的3D建模流程效率低下,设计师需要从基本形状逐步打造模型,再进行着色、细节处理等工作十分繁琐,而3D-GPT技术框架可有效解决这一痛点。

从论文介绍来看,主要由任务调度代理、概念化代理和建模代理三大块组成。任务调度代理扮演总指挥的角色,根据文本语言指令确定需要调用的建模函数,会查询所有可用函数的文档,选择最合适的对象。

概念化代理用于丰富语言描述的细节,为后续建模做准备。以树木生成为例,用户提供的文字可能仅是“碧绿的树林”,但建模需要更精确的参数如树枝长度、树叶类型等。而概念化代理就会自动补充这些细节,输出丰富的描述以指导建模。

在这里插入图片描述

建模代理则需要解析概念化代理输出的语言描述,转换为具体的代码和参数,调用相应函数实现建模。

以天空渲染为例,输入文字可能是“湛蓝的天空”,建模代理就需要推断出太阳强度、云层密度等参数,并写出调用天空渲染函数的代码,最终输出逼真的3D天空。

建模工具

3D-GPT使用了InfiniGen作为基于Python-Blender的过程化生成器。为让大语言模型能够高效利用InfiniGen,研究人员为每个函数Fj提供了提示,包括:

(1)函数文档Dj:详细解释输入参数Pj以及函数的目的和功能。

(2)易读代码Cj:提供容易理解的重构函数代码。

(3)所需信息Ij:概述推理函数参数所需的具体信息,协助理解函数的上下文和先决条件。

(4)使用示例Ej:提供示例演示如何从文本描述中推理参数Pj,以及如何调用函数。

这些资源使大语言模型可以利用其规划、推理和工具使用的核心能力,根据语言指令高效地利用InfiniGen进行3D生成。

在建模工具搭建好之后,3D-GPT采用了一个多代理协作框架,来处理3D建模流程。
在这里插入图片描述

任务调度代理

任务调度代理在规划过程中发挥关键作用。通过用户指令查询函数文档,然后选择所需的函数进行执行。

选择函数后,概念化代理进行推理以丰富用户提供的文本描述。最后,建模代理推断每个选定函数的参数,并生成Python代码,调用Blender API接口,促进相应3D内容的创建。

在这里插入图片描述

任务调度代理与系统的对话示例如下:

系统:你是根据用户指令选择合适函数的高效规划者。将被提供以下函数:<(F名称j,F用法j)>。以下是如何根据用户指令选择函数的几个示例:<E任务调度j>。

用户:我的指令是:

  • 任务调度代理:根据指令

  • ,我们确定了需要用于3D建模的函数子列表ˆF。
  • 概念化代理

    描述可能不会明确提供建模所需的详细外观描述。为缓解这一问题,引入了概念化代理,它与任务调度代理协作以增强用户提供的文本描述(Li)。对于每个函数Fj,它会将用户输入文本和相应的函数专属信息进行丰富,生成详细的外观描述Lij。

    系统与概念化代理对话格式如下:

    系统:你是专业作家,擅长描述对象的外观,特别是大型场景。给定描述

  • ,请提供以下信息所需的详细描述。
  • 对于描述中未提及的术语,请发挥想象力,以确保它们与文本描述一致。概念化代理:根据

  • 和请求的信息,扩展后的描述是:。
  • 建模代理

    在概念化之后,3D建模处理目标是将详细的人类语言转换为机器可理解的语言。

    在技术框架中,建模代理通过操作程序建模库中的函数来创建逼真的3D模型。对于每个函数Fj和用户指令Li,任务调度代理从概念化代理获得增强上下文 cLij。

    对于每个函数Fj,我们都有代码Cj,函数文档Dj和一个用法示例Ej。建模代理利用这些信息选择适当的函数并推断出相应的参数。

    在这里插入图片描述

    随后,建模代理生成准确调用所选函数的Python代码(例如,在循环中调用它,而不是调用它),并使用适当的数据类型正确传递推断的参数给函数。

    建模代理遵循以下对话模式:

    系统:你是一位优秀的3D设计师,能够将长文本描述转换为参数,并且擅长理解Python函数来操纵3D内容。给定文本描述,我们有以下函数代码和函数文档。

    以下是一个关于如何调用函数以使场景符合描述的示例:<E建模j>。理解函数,并通过调用函数建模符合文本描述的3D场景。

    建模代理:根据描述,将使用以下函数,并采用各自的参数值。

    Blender渲染:建模代理最终提供带有推断参数的Python函数调用,这些调用用于Blender节点控制和渲染,从而产生最终的3D网格和RGB结果。

    测试数据

    研究人员进行了大量实验,结果表明3D-GPT可以根据不同语言描述生成符合要求的3D场景和对象。具体表现如下:

    3D-GPT可以根据简要描述生成较大的3D场景,场景内容与描述基本一致。对于单一对象,3D-GPT可以准确捕捉其关键外观特征,实现精细的形状、曲线和属性控制。

    3D-GPT能够正确理解工具的功能,获取必要知识,并将其用于精确控制。即使参数与视觉外观无直接关系,也能准确推理参数值。在多步语言指令的场景中,3D-GPT能够充分理解每一步指令,并对场景进行准确修改。

    本文素材来源3D-GPT论文,如有侵权请联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1192017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vmware16.2内部win7联网

1、主机配置 前置条件&#xff1a;DHCP和NAT服务已启动 设置无线IP与虚拟机IP为自动获取 二者都是&#xff1a;右键-属性 选择IPv4 自动获取 2、虚拟机配置 设置虚拟机上网方式为NAT 菜单栏-虚拟机-设置 NMnet8改为NAT模式 菜单栏-编辑-虚拟网络编辑器 win7系统内部网…

Facebook广告被暂停是什么原因?广告账号被封怎么办?

许多做海外广告投放的小伙伴经常遇到一个难题&#xff0c;那就是投放的Facebook广告被拒或广告帐户被关闭赞停的经历&#xff0c;随之而来的更可能是广告账户被封&#xff0c;导致资金的损失。本文将从我自身经验&#xff0c;为大家分享&#xff0c;FB广告被暂停的原因有哪些&a…

Java多线程interrupt、interrupted、isInterrupted详解

一、概念 1.1 interrupt方法应用场景 用来打断正在阻塞的线程&#xff1a;sleep/wait/join打断正常的线程 1.2 interrupt() 方法 Thread类的实例方法&#xff0c;其作用是中断此线程&#xff08;此线程不一定是当前线程&#xff0c;而是指调用该方法的Thread实例所代表的线程…

【手写模拟Spring底层原理】

文章目录 模拟Spring底层详解1、结合配置类&#xff0c;扫描类资源1.1、创建需要扫描的配置类AppConfig&#xff0c;如下&#xff1a;1.2、创建Spring容器对象LyfApplicationContext&#xff0c;如下1.3、Spring容器对象LyfApplicationContext扫描资源 2、结合上一步的扫描&…

oracle11G在linux环境下的卸载操作

1.使用SQL*PLUS停止数据库 [oracleOracleTest oracle]$ sqlplus / as sysdba SQL> shutdown [immediate] SQL> exit2.停止Listener [oracleOracleTest oracle]$ lsnrctl stop3.停止HTTP服务 [rootOracleTest /root]# service httpd stop4.用su或者重新登录到root(如想…

bootstrap-fileinput拦截文件上传处理失败,根据后台返回数据处理

bootstrap-fileinput如何拦截后台数据&#xff0c;自定义处理业务逻辑 需要后台返回error字段&#xff0c;失败示例&#xff0c;注意&#xff1a;error必须有内容&#xff0c;不然默认也是成功&#xff0c; bootstrap-fileinput失败验证只需要 error 字段&#xff0c;其他附加…

【MySQL习题】各个视频的平均完播率【全网最详细教学】

目录 数据表描述 问题描述 输出示例 解题思路【重点】 正解代码 数据表描述 有以下两张表&#xff1a; 表1&#xff1a;用户-视频互动表tb_user_video_log 数据举例&#xff1a; 说明&#xff1a; uid-用户ID,video_id-视频ID start_time-开始观看时间end_time-结束观…

微信小程序报request:fail url not in domain list的解决方法

情况1&#xff1a;未设置合法域名 解决方法:请在微信公众平台登录小程序后台 > 开发管理 > 开发设置 > 服务器域名 情况2&#xff1a;设置了合法域名&#xff0c;开发工具仍然报错 解决方法: 在右上角点击详情&#xff0c;之后刷新一下项目配置&#xff0c;看看有…

一篇博客读懂单链表——Single-List

目录 一、初识单链表 单链表是如何构造的&#xff1a; 单链表如何解决顺序表中的问题&#xff1a; 二、单链表的初始定义 三、尾插和头插 3.1 新建结点CreateNode 3.2 打印SLTPrint 3.3 尾插SLTPushBack 3.4 头插SLTPushFront 四、尾删和头删 4.1 尾删SLTPopBack…

容器数据卷+MYSQL实战

什么是容器数据卷&#xff1f; 让我们回忆一下docker理念&#xff1a; 就是将应用和环境打包成一个镜像 数据&#xff1f; 如果数据都在容器中&#xff0c;那么我们删除容器&#xff0c;数据就会丢失 &#xff01;需求&#xff1a;数据持久化就完美了 对于MYSQL&#xff0…

玄子Share-Git 入门手册

玄子Share-Git 入门手册 简单介绍 Git Git 是一个自由和开源的分布式版本控制系统&#xff0c;旨在快速和高效地处理从小型到大型的所有项目 Git 简单易学&#xff0c;占用空间小&#xff0c;性能快如闪电。它比Subversion、CVS、Perforce和ClearCase等SCM工具更有优势&…

python默认的输入类型是字符串,怎样转换为其他的类型

在Python中&#xff0c;默认的输入类型是字符串&#xff08;str类型&#xff09;。无论你输入的是数字、字符还是其他类型的内容&#xff0c;input函数都会将其作为字符串处理并返回。 如果需要将字符串转换为其他类型&#xff08;如整数、浮点数等&#xff09;&#xff0c;可…

kafka和rocketMq的区别

kafka topic 中每一个分区会有 Leader 与 Follow。Kafka 的内部机制可以保证 topic 某一个分区的 Leader 与 Follow 不在同一台机器上 Leader 节点承担一个分区的读写&#xff0c;Follow 节点只负责数据备份 如果 Leader 分区所在的 Broker 节点宕机&#xff0c;会触发主从节…

Linux 的热插拔机制通过 Udev(用户空间设备)实现、守护进程

一、Udev作用概述 udev机制简介udev工作流程图 二、Linux的热拔插UDEV机制 三、守护进程 守护进程概念守护进程在后台运行基本特点 四、守护进程和后台进程的区别 一、Udev作用概述 udev机制简介 Udev&#xff08;用户空间设备&#xff09;是一个 Linux 系统中用于动态管…

玄子Share-HTML5知识手册

玄子Share-HTML5知识手册 前言&#xff1a; 这一版 HTML 笔记&#xff0c;算是我写的第四版了&#xff0c;第三版对照课本编写&#xff0c;第四版则是对照 MDN 官方文档编写&#xff0c;不论是术语亦或专业性&#xff0c;都更上一层 文章依托 MDN 文档&#xff0c;拓展了大量课…

【2023-11-09】git使用随记——gitignore文件配置某些文件忽略

git使用随记——gitignore文件配置某些文件忽略 通过git进行版本控制在项目中是非常常见的&#xff0c;一些项目构建上的文件通常是不需要进行版本控制的&#xff0c;也就无需推送到git仓库中&#xff0c;比如前端项目中的node_module目录。提供配置.gitignore文件 但是某些情…

腾讯云88,阿里云99,现在都这么卷了吗?!

你是否曾经想过&#xff0c;云服务器的价格竟然可以如此亲民&#xff1f;现在&#xff0c;腾讯云和阿里云竟然都推出了超低价位的云服务器&#xff0c;只要88元和99元&#xff01;这让我们这些自媒体人、创业者、开发者等都感到非常惊喜。可以看一下配置和价格&#xff1a; 可…

MATLAB中Line 属性说明

目录 颜色和样式 位置 Line 属性是注释线条的外观和行为。 Line 属性控制 Line 对象的外观和行为。通过更改属性值&#xff0c;可以修改线条的特定方面。使用圆点表示法查询和设置属性。 h annotation("line"); c h.Color; h.Color "red"; 颜色和样…

边缘计算如何改变数据存储?

边缘计算在整个价值链中提供多种优势——从降低成本到提高效率再到安全数据传输。该技术允许在源头收集和分析相关数据&#xff0c;这有助于减少延迟和带宽成本&#xff0c;同时显著提高计算过程的冗余系数和效率。 通过降低数据传输成本和损失&#xff0c;边缘计算帮助企业实现…

docker更改存储目录原因及方案

为什么一定要将docker的存储目录挂载到其他目录 docker在安装时默认存储目录在/var/lib/docker&#xff0c;而该目录是在系统盘下的。docker安装后&#xff0c;会使用各种各样的镜像&#xff0c;动辄几个G&#xff0c;那么如此多的镜像文件&#xff0c;装着装着系统盘就撑爆了…