十五、polygon API
- How polygons are handled internally
- The five basic polygonal API classes
- Construction History and Tweaks
- polyModifierCmd example
- splitUVCmd example
- Poly exporter plug-ins
用来存储polygon(faces,edges,vertices)等部分的基本数据结构,这些数据结构然后被封装到polygonal shape nodes,这些节点构成maya的基本结构——dependency graph。
Polygon components:
polygon Mesh 由三种基本的component组成:
1. Vertices
2. Edges:
3. Faces:
在这三种基础的polygon components之上还有2中附加的component:
5. Face-Vertices
6. UVs
每一个polygon mesh的vertices存储在一个数组中,数组的每一项为一个三维的浮点数指针,每一项对应一个vertexId,这个vertexId基于数组的index,edges和faces的索引都是基于这一个数组的索引。

边索引:polygon mesh的边存储在边数组中,每一条边由2个顶点组成,所以边数组的每一项为一个指向边结构的指针。边结构第一项的integer指向start vertex在顶点数组中的vertexId,第二项指向end vertex在顶点数组的顶点数组中的vertexId:

面数组:
polygonal mesh的面也全部被存储在一个数组中,每一个面被描述为一个整数序列,每一个整数代表一个edge的ID,所以它是基于边表上的。
第一个序列代表一个面的包围边,接下来的子序列代表了面当中所有的holes。
internal flags 标志了每个序列的起止。
(1)face array:

(2)face index array(face offset array):

face-vertices:
相邻的面共享一些顶点,通常你需要对应于某一个面的顶点,从而与同样的处于另一个面的同一个顶点进行区分,这就是face-vertices。
face-vertices是conceptual components,用来定义polygonal的特性(feature),例如color per vertex和UVs。face-vertices由face array和face index array来表示,每一个face-vertices由一个faceid和一个vertexid共同构成
可以有faceid在face array中找到edges,然后每个edgeid的start vertex就是由verticesid来对应的。
例子:

因而face array可以变为:

UVs:
UVs依赖于face-vertices的概念,UVs对应于2D的平面用来将texture映射到polygon surface上,The structure that holds UVs in Maya consists of two arrays:
- A UV index array that uses the exact same indices of the face array (visualized as a face vertex array).
- A UV array that holds a list of UV points indexed by UVIds.
The first array associates each face vertex with a given UVId or none at all if the face that the face-vertex belongs to is not mapped. Each UVId then corresponds to an index in the UV list that holds the 2D point (U and V float values) where the UV is situated on the UV space.:

The Polygonal shape node:
用来表示一个mesh,对应maya中的一个DG,The polygonal shape node holds four fundamental attributes: an inMesh, an outMesh, a cachedInMesh, and pnts (tweaks), as shown in the following illustration.

十五、polygon API的更多相关文章
- ElasticSearch(十五) _search api 分页搜索及deep paging性能问题
1.分页搜索 语法: size,from GET /_search?size=10 GET /_search?size=10&from=0 GET /_search?size=10&f ...
- 十五、API请求接口-远程服务器返回错误: (400) 错误的请求错误
一.远程服务器返回错误: (400) 错误的请求错误 捕获异常查看具体错误 using Newtonsoft.Json; using System; using System.Collections. ...
- 微信小程序把玩(三十五)Video API
原文:微信小程序把玩(三十五)Video API 电脑端不能测试拍摄功能只能测试选择视频功能,好像只支持mp4格式,值得注意的是成功之后返回的临时文件路径是个列表tempFilePaths而不是tem ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 【D3.V3.js系列教程】--(十五)SVG基本图形绘制
[D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...
- VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager
VMware vSphere服务器虚拟化实验十五 vCenter vShield Manager VMware vShield Manager是专为 VMware vCenter Server 集成 ...
- 手机自动化测试:appium源码分析之bootstrap十五
手机自动化测试:appium源码分析之bootstrap十五 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣 ...
- spring boot / cloud (十五) 分布式调度中心进阶
spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- Gradle 1.12 翻译——第十五章. 任务详述
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
随机推荐
- JDBC使用事务实例
package qddx.JDBC; import java.sql.*; public class useTransaction { public static void main(String[] ...
- 第一章:UNIX基础知识
本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后 ...
- Java中抽象类和接口
抽象类: 为什么要用抽象类? 1.父类的方法好多情况下是没有内容的.例如:USB是一个父类,里面的方法的函数体是可以不写,通过子类可以重写. 2.万一子类没有重写正确,是没有没有提示的.例如:父类中函 ...
- 多模块打包后,扫描不到@controller和@service,实现 ADD DIRECTORY ENTRIES
多模块打包后,扫描不到@controller和@service等Bean. 原因:打包时没有生成目录信息 解决办法: 1.在eclipse或者myeclipse 打包时 勾选 ADD DIRECTOR ...
- Java注释
注释:用于注解说明解释程序的文字.提高了代码的阅读性. 一:单行注释 "//注释文字" 二:多行注释 "/*注释文字*/" 三:文档格式 "/**注释 ...
- Web性能测试的简介
一.术语 1.并发用户:并发一般分两种.1)严格意义上的并发,即所有的用户在同一时刻做同一件事情或操作,这种操作一般指做同一类型的业务:2)广义范围的并发,与前者主要区别,尽管多个用户对系统发出了请求 ...
- 关于javascript中闭包的理解
闭包就是能够读取其他函数内部变量的函数. 在javascript中,只有函数内部的子函数可以读取局部变量,因此,我理解闭包就是定义在一个函数内部的函数. 例子: var f1 = function() ...
- PHP常用的文件操作函数集锦
以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名:basename();给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件 ...
- mac电脑的使用
1. control + command + a 截图 2. shift + command + g 前往 3.在 Mac OS X 中怎样获取当前文件夹的路径 原文网址:https://www.zh ...
- DBA-mysql-字符集
查看支持的字符集:show charset; 查看现使用字符集:status; 1.在[mysqld]下添加 default-character-set=utf8 (mysql 5.1版本) char ...