pytorch3d定义的mesh结构在pytorch3d.structures.meshes源码中可以看到。

首先,meshes数据可能包含多个 mesh结构,每个mesh可能又不同的顶点数和面数。pytorch3d的meshes结构在load obj 或plt文件中的数据后,给出了三种不同的数据格式,分别是:verts_list, verts_packed, verts_padded。

  • def verts_list(self): 与输入相同,未处理
  • def verts_packed(self): 为方便用于深度学习,pytorch3d有针对mesh结构的batch dimension,为保持每个数据长度一致,它将每个mesh填充找到最多点数的mesh,该点数为max(V_n),并将其它mesh点数填充到max(V_n)
def verts_packed(self):"""Get the packed representation of the vertices.Returns:tensor of vertices of shape (sum(V_n), 3)."""self._compute_packed()return self._verts_packed
  • def verts_padded(self):packed是将点数压缩存储的一种形式,它没有batch dimension,但有额外的信息来存储每个mesh的相应点。
def verts_padded(self):"""Get the padded representation of the vertices.Returns:tensor of vertices of shape (N, max(V_n), 3)."""self._compute_padded()return self._verts_padded

faces与verts情况类似,可查看链接。

def _compute_padded(self, refresh: bool = False):"""Computes the padded version of meshes from verts_list and faces_list."""if not (refresh or any(v is None for v in [self._verts_padded, self._faces_padded])):returnverts_list = self.verts_list()faces_list = self.faces_list()assert (faces_list is not None and verts_list is not None), "faces_list and verts_list arguments are required"if self.isempty():self._faces_padded = torch.zeros((self._N, 0, 3), dtype=torch.int64, device=self.device)self._verts_padded = torch.zeros((self._N, 0, 3), dtype=torch.float32, device=self.device)else:self._faces_padded = struct_utils.list_to_padded(faces_list, (self._F, 3), pad_value=-1.0, equisized=self.equisized)self._verts_padded = struct_utils.list_to_padded(verts_list, (self._V, 3), pad_value=0.0, equisized=self.equisized)# TODO(nikhilar) Improve performance of _compute_packed.def _compute_packed(self, refresh: bool = False):"""Computes the packed version of the meshes from verts_list and faces_listand sets the values of auxiliary tensors.Args:refresh: Set to True to force recomputation of packed representations.Default: False."""if not (refreshor any(v is Nonefor v in [self._verts_packed,self._verts_packed_to_mesh_idx,self._mesh_to_verts_packed_first_idx,self._faces_packed,self._faces_packed_to_mesh_idx,self._mesh_to_faces_packed_first_idx,])):return

官方文档中的解释

pytorch3d.structures.meshes — PyTorch3D documentationhttps://pytorch3d.readthedocs.io/en/latest/_modules/pytorch3d/structures/meshes.html

pytorch3d代码解释:pytorch3d.structures.meshes之verts_list, verts_packed, verts_padded相关推荐

  1. pytorch3d学习之pytorch3d.ops

    pytorch3d.ops是pytorch提供的一些关于3d数据,即计算机图形学的一些运算的包. 1.pytorch3d.ops.ball_query() pytorch3d.ops.ball_que ...

  2. ViSP中识别AprilTag的C++实例代码解释

    VISP中识别AprilTag的C++实例代码解释 接着上一篇: VISP中识别AprilTag的C++实例代码与运行结果 先展示代码,一句一句解释吧 #include <visp3/detec ...

  3. 最小操作系统的代码解释、NASM的初步使用

    一.最小操作系统的代码解释 很多资料上都有最小操作系统代码,即从裸机开始运行.引导机器.显示 hello world 并进入循环等待的代码:下面对代码进行一下大体的解释: org 07c00h; 告诉 ...

  4. ML之sklearn:sklearn的make_pipeline函数、RobustScaler函数、KFold函数、cross_val_score函数的代码解释、使用方法之详细攻略

    ML之sklearn:sklearn的make_pipeline函数.RobustScaler函数.KFold函数.cross_val_score函数的代码解释.使用方法之详细攻略 目录 sklear ...

  5. OpenCV用代码解释单应性的基本概念

    OpenCV用代码解释单应性的基本概念 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? 单应变换如何有用? 示范代码 从共面点估计姿势 用代码解释单应性的基本概念 基础理论 单应矩阵是什么? ...

  6. 基于vue2.0实现音乐/视频播放进度条组件的思路及具体实现方法+代码解释

    基于vue2.0实现音乐/视频播放进度条组件的方法及代码解释 需求分析: ①:进度条随着歌曲的播放延长,歌曲播放完时长度等于黑色总进度条长度:时间实时更新. ②:当滑动按钮时,实时更新播放时间,橙色进 ...

  7. 【Python笔记】列表基础操作 :创建,增加、删除、查询。附加:练习题。用简单代码解释。

    Python:列表基础操作 创建,增加.删除.查询.附加练习题.用简单代码解释. 目录 Python:列表基础操作 演示环境 第一部分:列表(list) 1. 创建空列表 2. 创建只有默认值的列表 ...

  8. Jena学习三——代码解释

    代码解释 可以直接官网学习http://jena.apache.org/tutorials/rdf_api.html#ch-Jena%20RDF%20Packages Tutorial01 packa ...

  9. 播放失败246106异常代码_美的燃气热水器修理分享(附代码解释)

    上门检修一台美的强排热水器. 试机检查:打开水流,强排风机虽转,未听到燃气电磁阀吸合和燃气火力声音,出水口也只有冷水流出,几秒后显示E2.查相应的代码解释E2:风压异常或风机故障.但观风机运行速度声音 ...

  10. 最简版Seq2Seq的英法机器翻译实践和详细代码解释

    Seq2Seq的英法机器翻译实践 本文的内容主要是基于英法平行语料库来实现一个简单的英法翻译模型.没有使用注意力机制和双向LSTM等技术,主要是为了掌握基本的Seq2Seq结构和TensorFlow函 ...

最新文章

  1. SQL Server 中 sysobjects表
  2. mac80211源码分析
  3. 《Python游戏编程快速上手》第四章-讲笑话
  4. binlog以及Canel
  5. 2016年2月工作日志
  6. 别再叫我“老工”!!!工程师姓什么很重要!
  7. Ibatis中的大于、小于、like等符号写法
  8. 《工业控制网络安全技术与实践》一2.2 分布式控制系统
  9. 【Computer Organization笔记01】计算机组成原理课程要求、计算机的层次结构、计算机的发展历史
  10. 网站左侧悬浮框随着滚动条滚动代码
  11. 11、盛最多水的容器(python)
  12. 主流无线芯片厂商的自动信道选择算法小结
  13. 灰色预测(MATLAB)
  14. Chrome浏览器使用谷歌翻译插件的正确方法
  15. Flink清洗日志服务SLS的数据并求ACUPCU
  16. matlab中如何转动三维图_matlab如何画三维图
  17. AcWing每日一题 3565.完美矩阵(绝对值不等式)
  18. 学嵌入式好还是java好?
  19. 题解 P1985 【[USACO07OPEN]翻转棋】
  20. 大学物理 复习指导、公式推导精简过程、结论归纳 第二章 牛顿定律

热门文章

  1. 误码率与信噪比的关系matlab,误码率BER与信噪比SNR的关系解析
  2. @Required注解
  3. JavaScript 编写Date 格式化方法『Python风格』
  4. 一份来自前端开发工程师的规范简历
  5. number1(python)
  6. 第六章-2 CS创建监听与payload
  7. 基于ENVI下的土地利用信息提取(一)
  8. 【转载】彻底理解cookie,session,token - 墨颜丶
  9. Datawhale组队学习周报(第025周)
  10. 划片机是芯片切割制造流程中一个重要的环节