3D模型深度生成网络【ShapeAssembly】

news/2024/4/25 13:07:43/文章来源:https://blog.csdn.net/shebao3333/article/details/128948153

在这里插入图片描述

推荐:使用 NSDT场景设计器 快速搭建 3D场景。

我们提出了一个深度生成模型,该模型学习在ShapeAssembly中编写新颖的程序,ShapeAssembly是一种用于建模3D形状结构的特定领域语言。

执行 ShapeAssembly 程序会生成一个由部件代理长方体的分层连接程序集组成的形状。我们的方法开发了一个格式良好的潜在空间,支持程序之间的插值。上面,我们展示了一个这样的插值,并可视化了这些程序在执行时产生的几何形状。在最后一列中,我们手动编辑生成的程序的连续参数,以生成具有新拓扑的变体几何结构。
在这里插入图片描述

1、概述

手动创作 3D 形状既困难又耗时;3D 形状的生成模型提供了引人注目的替代方案。程序表示(procedural representations)就是这样一种可能性:它们提供高质量和可编辑的结果,但难以创作,并且通常产生多样性有限的输出。另一个极端是深度生成模型(deep generative models):给定足够的数据,它们可以学习生成任何类别的形状,但它们的输出有伪影并且表示不可编辑。

在本文中,我们朝着实现新颖的3D形状合成的两全其美迈出了一步。首先,我们提出了ShapeAssembly,一种用于3D形状结构的特定领域的“汇编语言”

ShapeAssembly 程序通过声明长方体部件代理并以分层和对称的方式将它们相互附加来构建形状结构。ShapeAssembly 函数使用连续自由变量进行参数化,因此一个程序结构能够捕获一系列相关形状。我们展示了如何从PartNet数据集中的现有形状结构中提取ShapeAssembly程序。然后我们训练一个深度生成模型,一个分层序列VAE,学习编写新颖的ShapeAssembly程序。我们的方法利用了每种表示的优势:程序捕获可解释和可编辑的形状可变性的子集,深度生成模型捕获难以通过程序表达的形状集合之间的可变性和相关性。

我们通过比较我们生成的程序输出的形状与其他最近的形状结构合成模型输出的形状来评估我们的方法。我们发现我们生成的形状比其他方法更合理,在物理上更有效。此外,我们评估了这些模型的潜在空间,发现我们的模型结构更好,并且产生更平滑的插值。作为一个应用程序,我们使用我们的生成模型和可微程序解释器来推断形状程序并将其拟合到非结构化几何体,例如点云。

2、ShapeAssembly DSL

在这里插入图片描述

ShapeAssembly是一种用于形状结构的低级特定领域的“汇编语言”。程序由实例化新几何图形的长方体语句和附加语句组成,这些语句将这些几何图形在其表面上的指定点连接在一起。宏函数(反射、平移、挤压)通过扩展到多个长方体和附加语句来形成复杂的空间关系。

上面,我们说明了 ShapeAssembly 解释器如何通过命令式执行程序命令来增量构造形状。长方体在原点实例化,并通过附着移动。请注意第 6 行中的 reflect 命令如何充当宏函数,创建一个新的长方体和两个新附件。

下面我们展示了这种命令式执行对分层程序的直接扩展:我们通过将选定的非叶长方体视为另一个程序的边界框来表示分层形状。

你可以在此处使用我们的交互式解释器试用ShapeAssembly语言。

在这里插入图片描述

3、几何形状生成

在这里插入图片描述

在中间一行,我们展示了来自ShapeAssembly程序生成模型的样本。在顶行中,我们按倒角距离显示训练集中的最近邻形状。在底行中,我们按程序编辑距离显示训练集中的最近邻形状。我们的方法合成了有趣和高质量的结构,超越了直接的结构或几何记忆。

4、几何形状编辑

在这里插入图片描述

程序通过表示形式,允许对生成的输出进行简单的语义编辑。每列在顶行显示模型的示例。在底行中,我们通过仅编辑程序的连续参数来创建具有相同结构但几何形状不同的变体。

5、几何形状插值

在这里插入图片描述

我们的方法和 StructureNet 对验证集中形状的潜在空间插值的定性比较。我们的方法在程序空间内的插值产生将平滑连续变化与离散结构过渡相结合的序列。

6、从非结构化几何体合成

在这里插入图片描述

上面,我们展示了我们的方法与StructureNet(SN)的点云合成的定性比较。我们的方法能够推断出与非结构化几何形状匹配良好的程序结构。该程序结构的连续参数可以通过优化程序进一步细化,以便在不产生伪影的情况下更好地拟合目标点云。我们在下面的 gif 中显示了此优化的动态版本。
在这里插入图片描述
在这里插入图片描述


原文链接:ShapeAssembly — BimAnt

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023,考个软考中级证书稳妥深圳入户,5月考试8月办入户

最新消息!最新消息!最新消息! 2023年2月8日,深圳市发展和改革委员会深圳市公安局深圳市人力资源和社会保障局关于印发《深圳市积分入户办法》的最新通知↓ 来源《深圳市发展和改革委员会》 该积分入户将于2023年2月15日正式实施&…

Prometheus监控Java-JMX

一、什么是 JMX Exporter ? JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的一些监控数据,然后将其转换为 Prometheus 所认知的 metrics 格式,以便让 Prometheus 对其进行监控采集。 那么,JMX 又是什么呢?它的全称是&a…

ChatGPT 支持的搜索引擎 Bing 究竟什么样?

微软于2月8日北京时间凌晨在 Redmond 线下举办一场媒体活动,围绕微软的产品以及 AI,公布最新消息。这里我们先回顾一下微软在 AI 上的布局。 2019年,微软向 OpenAI 投资10亿美元,成为了 OpenAI 紧密的合作伙伴,而微软…

Java中动态调用setter以及getter

0x00 前言 对于非专业程序员的安全人员来说,因为没有代码项目的积累,很多知识体系都不完善,所以有必要在一些常用的内容进行学习的总结。 在很多的调用链中都会用到**“动态调用setter以及getter”**这个知识点,比如经典的CB链&a…

Python语言零基础入门教程(九)

Python pass 语句 Python pass 是空语句,是为了保持程序结构的完整性。 pass 不做任何事情,一般用做占位语句。 Python 语言 pass 语句语法格式如下: pass测试实例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 输出 Pytho…

线程池小结

什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象; 为什么使用线程池 …

leetcode刷题之背包问题(01背包)

01 背包 概念:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]weight[i]weight[i],得到的价值是value[i]value[i]value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 方法1:暴力回溯…

FPGA时序约束与分析 --- 实例教程(1)

注意: 时序约束辅助工具或者相关的TCL命令,都必须在 open synthesis design / open implemention design 后才能有效运行。 1、时序约束辅助工具 2、查看相关时序信息 3、一般的时序约束顺序 1、 时序约束辅助工具(1)时序约束编辑…

微服务负载均衡器Ribbon

目录 什么是Ribbon 客户端的负载均衡 服务端的负载均衡 常见负载均衡算法 Nacos使用Ribbon 添加LoadBalanced注解 修改controller Ribbon负载均衡策略 IRule AbstractLoadBalancerRule 修改默认负载均衡策略 自定义负载均衡策略 配置自定义的策略 饥饿加载 Ribbo…

【golang】1797. 设计一个验证系统

你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同)时…

C语言经典编程题100例(1-20)

1、练习2-1 Programming in C is fun!本题要求编写程序&#xff0c;输出一个短句“Programming in C is fun!”。输入格式:本题目没有输入。输出格式:在一行中输出短句“Programming in C is fun!”。代码&#xff1a;#include<stdio.h> int main() {printf("Progra…

Java中类是什么

类(class)是构造对象的模板或蓝图。 我们可以将类想象成制作小甜饼的模具&#xff0c;将对象想象为小甜饼。由类构造(construct)对象的过程称为创建类的实例(instance)。 正如前面所看到的&#xff0c;用Java 编写的所有代码都位于某个类里面。 标准 Java 库提供了几千个类&a…

bcript 算法

一、简介 今天要给大家介绍的一种“加密”算法叫做 bcrypt&#xff0c;bcrypt 是由 Niels Provos 和 David Mazires 设计的密码哈希函数&#xff0c;他是基于 Blowfish 密码而来的&#xff0c;并于 1999 年在 USENIX 上提出。 除了加盐来抵御 rainbow table 攻击之外&#xf…

尚硅谷电商数仓5.0(华为云服务器)主机初期基本配置

文章目录服务器配置信息&#xff1a;注意事项&#xff1a;1.购买注意事项&#xff1a;2.后期使用注意事项&#xff1a;三台主机的基本配置服务器配置信息&#xff1a; 使用了两个账号&#xff0c;账号1买了两个服务器&#xff0c;一台4核8G&#xff0c;一台2核4G&#xff0c;账…

hgame2023 WebMisc

文章目录Webweek1Classic Childhood GameBecome A MemberGuess Who I AmShow Me Your BeautyWeek2Git Leakagev2boardSearch CommodityDesignerweek3Login To Get My GiftPing To The HostGopher Shopweek4Shared DiaryTell MeMiscweek1Where am I神秘的海报week2Tetris Master…

Qml学习——基本控件

最近在学习Qml&#xff0c;但对Qml的各种用法都不太熟悉&#xff0c;总是会搞忘&#xff0c;所以写几篇文章对学习过程中的遇到的东西做一个记录。 学习参考视频&#xff1a;https://www.bilibili.com/video/BV1Ay4y1W7xd?p1&vd_source0b527ff208c63f0b1150450fd7023fd8 目…

蓝桥杯刷题023——机器人塔(DFS)

2016国赛 题目描述 X 星球的机器人表演拉拉队有两种服装&#xff0c;A 和 B。 他们这次表演的是搭机器人塔。 类似&#xff1a; A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是&#xff1a; A 只能站在 AA 或 BB 的肩上。 B 只能站在 AB 或 BA 的肩上。 你的任务…

网络通信协议是什么?

网络通信基本模式 常见的通信模式有如下2种形式&#xff1a;Client-Server(CS) 、 Browser/Server(BS) 实现网络编程关键的三要素 IP地址&#xff1a;设备在网络中的地址&#xff0c;是唯一的标识。 端口&#xff1a;应用程序在设备中唯一的标识。 协议: 数据在网络中传输的…

Python-第二天 Python基础语法

Python-第二天 Python基础语法一、 字面量1.1 常用的值类型1.1.1 字符串&#xff08;string&#xff09;二、注释2.1 注释的作用2.2 注释的分类三、变量3.1 什么是变量3.2 变量的特征四、数据类型4.1 数据类型4.2 type()语句4.3 type()语句的使用方式4.4 变量有类型吗&#xff…

企业数字化转型的产品设计思路

数字化转型的核心是全面重塑企业的管理模式和经营模式&#xff0c;是迈向数字经济时代的方式。一、到底什么是数字化转型&#xff1f;数字化转型并不神秘。数字化转型是一种经营方式、一种经营理念&#xff0c;是将企业相关的人、物料、设备、资金等要素进行系统运转&#xff0…