服装CAD中三维人体建模技术研究
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
科技信息
○高校讲坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 1 期
服装 CAD 中三维人体建模技术研究
李宋明 林德静 ( 北京服装学院计算机教学中心 中国 北京 100029)
【摘 要】本文从 POSER 软件中导出包含三维人体数据点的 OBJ 文件, 通过三角剖分算法对数据点进行优化, 利用 VC++和 OpenGL 建 立 三维人体仿真模型。此方法建立人体模型快速, 精确度较高, 为进一步开发功能完善的服装三维 CAD 系统提供了良好的平体。
【Abstr act】This paper exports the OBJ files including 3D mannequin’s daya points from the POSER software. According a new triangulation optimizes the daya points, uses VC++ and OpenGL to build 3D emulational mannequin.This method can build model quickly and exactly, offer a better platform for more empoldering function perfect three- dimensional CAD system.
[ 责任编辑: 韩铭]
人台线框图
光照渲染效果图
index ].y, pObject- >pNormals[ index ].z);
glVertex3f (pObject - >pVerts [index].x,pObject - >pVerts[index].y,
pObject- >pVerts[ index ].z);
}
}
glEnd();
// 绘制结束
1.1 三维人体数据的提取 本文所建的三维人体模型是以 POSER 数据库中的女性人体为模 板, 选取男性人体模块转化为 OBJ 文件格式输出。直接导出的 OBJ 文 件并不适于直接构建三维模型, 要经过适当的处理才能使用。本文采 用 VC++6.0 的标准模板库技术和动态数组 技 术 将 OBJ 文 件 中 的 数 据 进行压缩处理, 去除掉以 vt,vn,u sen tl,m tllib 为关键字的字符串, 只保 留文件中以 v 为关键字的数据。本文采用了::std::deque<>容器模板类 生成的对象来管理动态数组, 用其中的 pushback,insert,sort 等 函 数 对 保留的数据进行选择排序处理。经过处理后的人体数据, 包含了全部 的有用信息, 为接下来的人体建模提供了数据支持[5] 。 1.2 三维人体数据的优化处理 Delaunay 三角剖分算法是一种常用的算法, 它的特点是剖分结果 的每个三角形都尽量接近等 边 三 角 形 。 三 维 散 乱 点 集 Delaunay 三 角 曲面剖分在 CAGD/CAD、反求工程等方面有着十分广泛的应用。故本 系 统 采 用 Delaunay 三 角 剖 分 法 来 处 理 从 Poser 中 导 出 的 人 台 曲 面 的 顶点, 将他们按小三角平面行进重建。以下是 Delaunay 算法的实现步 骤。 步骤 l: 建立点链表(NodeList), 负责管理平面上的点集 S。建立三 角形链表(Delaunay List), 负责记录所生成 的 三 角 形, 链 上 每 一 个 结 点 记录了三角形 3 个顶点的索引号 : 建 立 点 指 针 数 组 (NodeArry), 负 责
【关键词】POSER 软件; OBJ 文件; 三角刨分算法; 三维人体仿真模型 Modeling for Appar el 3D Mannequin Resear ch In thr ee- dimensional CAD system. LI Song- ming LIN De- jing (Computer Center ,Beijing Insitute of Clothing Technology,Beijing 100029,China)
1.三维人体数据的提取和处理
要 进 行 三 维 人 体 建 模 就 必 须 得 到 人 体 的 三 维 数 据 。人 体 的 三 维 数 据 一 般 是 通 过 三 维 人 体 自 动 扫 描 测 量 设 备 获 取 的 。但 其 所 测 的 结 果 没 有排除人体着装的影响, 与服装业对人体测量的要求以及 CAD/CAM 技术的要求仍有一定的差距; 另外, 人体自动扫描测量设备, 如德国 Tecmath 公 司 的 VITUS 人 体 扫 描 仪 等 , 价 格 都 十 分 昂 贵 , 不 太 适 合 目 前中国大部分中小服装企业[3] 。本文在参阅了各种资 料 后 , 选 用 三 维 人 体 建 模 软 件 POSER 来 获 得 人 体 三 维 数 据 。POSER 是 美 国 Curious Labs 开发的三维人体图像和动画软件, 是 迄 今 使 用 范 围 最 广 的 人 体 造型软件。该软件提供了大量现成的人体模型, 同时可以调整四肢和 身体的尺寸比例。另外, 该软件提供了多种各式的数据输出, 如 DXF, OBJ,3DS,BMP 等, 可以使其中的人体数据很方便的与其他软件进行交 互[4] 。
【key wor ds】POSER software; OBJ files; triangulation; 3D emulational mannequin
随着服装业的发展和消费者对服装的和体度, 舒适度的要求的提 高 , 市 场 对 三 维 服 装 CAD 的 需 求 也 大 幅 增 加 , 智 能 化 , 信 息 化 的 三 维 服装 CAD 开发已成为当今服装业的主流[1] 。其中三维人体建模是三维 服 装 CAD 的 基 础 , 三 维 服 装 CAD 的 网 上 定 制 , 虚 拟 试 衣 等 功 能 都 离 不 开 三 维 人 体 。目 前 使 用 的 三 维 人 体 建 模 技 术 主 要 有 基 于 特 征 的 服 装 人体曲面建模, 参数化的曲面建模, 多面体建模和以网格边界线为条 件 的 三 维 人 体 建 模 。多 面 体 建 模 技 术 是 一 种 设 计 者 的 构 思 来 进 行 局 部 处理并生成人体模型的方法, 可以灵活的进行人体 结 构 设 计[2] 。 本 文 采用多面体建模技术, 从 POSER 软件中提出三维人体数据点的 OBJ 文件, 通过提出一种新的三角刨分算法对数据点进行优化, 利用 VC++ 和 OpenGL 建立三维人体仿真模型。
}
2.3 实现效果
本文利用上面提到的重建人台模型的算法, 以 VC++为平台, 结合
OpenGL 建立三维人台模型。生wk.baidu.com的人台线框图和光照渲染效果图如
下:
3.结论 本 文 通 过 POSER 软 件 获 取 三 维 人 体 数 据 , 在 VC++框 架 下 , 利 用 OpenGL 技术, 采用多面体建模技术生成服装三维人体。在本文的基础
上可以进一步进行人体与服装相关尺寸的提取, 也可以进行曲面拟 合, 制作高真实性的三维人体, 为制作能够实现服装选购的网络化, 三 维试衣等功能的 CAD 软件提供了一种快捷有效的解决方案。科
● 【参 考 文 献 】
[ 1] 徐美玲.服装 CAD 在服装业中的应用与发展[ J] .纺织导报.2002(2):24- 26. [ 2] 朱李丽, 邓中民, 李刚炎.三维服装 CAD 中人体建模综述[ J] .武汉科技学院学 报.2004(1): 19- 21. [ 3] 雒薇艳, 李凤仙, 甘应进.国内外服装 CAD 操作系统的对比与展望[ J] .吉林工 学院学报.2002,23(2):59- 61. [ 4] 叶洪涛.Poser 基础教程[ M] .北京: 清华大学出版社.2005.9. [ 5] 向南平, 左廷英, 江资斌.OpenGL 中 Maya 模型的应用[ J] .微型电脑应用.2002 (10): 29- 32.
for(int whichVertex = 0; whichVertex < 3; whichVertex++)
{
// 获得面对每个点的索引
int index = pObject- >pFaces[j].vertIndex[whichVertex];
// 给出法向量
glNormal3f (pObject - >pNormals [index].x, pObject - >pNormals [
glBegin(GL_TRIANGLES); // 遍历所有的面 for(int j = 0; j < pObject- >numOfFaces; j++) { // 遍历三角形的所有点
233
科技信息
○高校讲坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 1 期
记录每一个点的指针。建立点链表动态向内存申请 Node 类对象的存 储 区 域, 将 其 指 针 加 入 到 NodeList 和 NodeArry 中, 从 最 内 部 的 点 开 始, 直至将全部点都加入到链表中。计算出三角形数 TriNum, 此时三 角形号 num 赋零值。
步骤 2: 创建第一个三角形。 (1)从点链表中取出第一个点 P1, 遍 历 点 链 表 NodeList, 计 算 相 邻 各点 距 离, 寻 找 最 近 的 点 P2, 以 P1 P2 为 基 边 用 准 则 4 找 第 三 点 P3, 则 P1, P2, P3 为顶点的三角形。将 P1, P2, P3 的索引号读入点三角形 数组(Delaunay List)中。 (2)扩展初始边 P1P2。 (3)更新点 P1,点 P2,点 P3 的表边。 步骤 3: 循环扩展所有三角形。 (1)取出当前 的 三 角 形 3 个 顶 点 P1,P2, P3 其 中 边 P1P2 是 不 需 扩 展的边, P3P1 需要扩展。 (2)扩展边 P3P1。 (3)以 P3, P1 为 基 边 用 准 则 4 找 第 四 点 P4, 则 P1, P3, P4 为 顶 点 的三角形。将 P1, P3, P4 的索引号读入点三角形 数 组 (Delaunay List) 中。 (4)若 num<=TriNum, 返回步骤 2; 否则, 步骤 4。 步骤 4 算法结束。此时三角形数组(Delaunay List)中保留了构成模 型的所有三角形的 3 个顶点的索引号值。 2.利用 VC++和 Ope nGL 实现三维人体的建立 OpenGL 是一种独立的图形硬件接口, 具有高性能的交互式三维 图形建模能力和跨平体性, 是从事三维图形开发工作的必要工具[7]。 VC++是 Windows 环境下功能最强大的编程工具, VC++中 可 以 直 接 嵌 入 OpenGL 语句, 是 OpenGL 天 然 的 开 发 工 具 。 故 本 文 利 用 VC++和 OpenGL 实现三维人体的建立。 2.1 建模步骤 实现人体建模的过程中, 我们首 先 从 OBJ 文 件 中 读 取 人 体 各 部 件曲面的顶点信息, 将各个部件的信息以链表的形式储存起来, 然后 遍历链表中的每一个节点, 使用 Delaunay 三 角 剖 分 , 然 后 再 求 出 各 顶 点的法向量。最后利用 OpenGL 强大的消隐、着色等三维显 示 和 处 理 功能, 重建人体各部件的曲面。这样, 遍历完整个链表, 将链表上的每 个部件的曲面都显示出来, 就完成了整个人体的重建。 2.2 生成人体模型的主要程序 我们读入包含三维人体数据的 OBJ 文件, 从文件中读出每个面所 包含的三个顶点的坐标值, 通过函数 glVertex3f()来绘制每一个小三角 形面, 通过索引来将小三角形面进行连接, 生成三维人体网格, 并对每 一个小三角形面进行光照处理。主要程序如下:
○高校讲坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 1 期
服装 CAD 中三维人体建模技术研究
李宋明 林德静 ( 北京服装学院计算机教学中心 中国 北京 100029)
【摘 要】本文从 POSER 软件中导出包含三维人体数据点的 OBJ 文件, 通过三角剖分算法对数据点进行优化, 利用 VC++和 OpenGL 建 立 三维人体仿真模型。此方法建立人体模型快速, 精确度较高, 为进一步开发功能完善的服装三维 CAD 系统提供了良好的平体。
【Abstr act】This paper exports the OBJ files including 3D mannequin’s daya points from the POSER software. According a new triangulation optimizes the daya points, uses VC++ and OpenGL to build 3D emulational mannequin.This method can build model quickly and exactly, offer a better platform for more empoldering function perfect three- dimensional CAD system.
[ 责任编辑: 韩铭]
人台线框图
光照渲染效果图
index ].y, pObject- >pNormals[ index ].z);
glVertex3f (pObject - >pVerts [index].x,pObject - >pVerts[index].y,
pObject- >pVerts[ index ].z);
}
}
glEnd();
// 绘制结束
1.1 三维人体数据的提取 本文所建的三维人体模型是以 POSER 数据库中的女性人体为模 板, 选取男性人体模块转化为 OBJ 文件格式输出。直接导出的 OBJ 文 件并不适于直接构建三维模型, 要经过适当的处理才能使用。本文采 用 VC++6.0 的标准模板库技术和动态数组 技 术 将 OBJ 文 件 中 的 数 据 进行压缩处理, 去除掉以 vt,vn,u sen tl,m tllib 为关键字的字符串, 只保 留文件中以 v 为关键字的数据。本文采用了::std::deque<>容器模板类 生成的对象来管理动态数组, 用其中的 pushback,insert,sort 等 函 数 对 保留的数据进行选择排序处理。经过处理后的人体数据, 包含了全部 的有用信息, 为接下来的人体建模提供了数据支持[5] 。 1.2 三维人体数据的优化处理 Delaunay 三角剖分算法是一种常用的算法, 它的特点是剖分结果 的每个三角形都尽量接近等 边 三 角 形 。 三 维 散 乱 点 集 Delaunay 三 角 曲面剖分在 CAGD/CAD、反求工程等方面有着十分广泛的应用。故本 系 统 采 用 Delaunay 三 角 剖 分 法 来 处 理 从 Poser 中 导 出 的 人 台 曲 面 的 顶点, 将他们按小三角平面行进重建。以下是 Delaunay 算法的实现步 骤。 步骤 l: 建立点链表(NodeList), 负责管理平面上的点集 S。建立三 角形链表(Delaunay List), 负责记录所生成 的 三 角 形, 链 上 每 一 个 结 点 记录了三角形 3 个顶点的索引号 : 建 立 点 指 针 数 组 (NodeArry), 负 责
【关键词】POSER 软件; OBJ 文件; 三角刨分算法; 三维人体仿真模型 Modeling for Appar el 3D Mannequin Resear ch In thr ee- dimensional CAD system. LI Song- ming LIN De- jing (Computer Center ,Beijing Insitute of Clothing Technology,Beijing 100029,China)
1.三维人体数据的提取和处理
要 进 行 三 维 人 体 建 模 就 必 须 得 到 人 体 的 三 维 数 据 。人 体 的 三 维 数 据 一 般 是 通 过 三 维 人 体 自 动 扫 描 测 量 设 备 获 取 的 。但 其 所 测 的 结 果 没 有排除人体着装的影响, 与服装业对人体测量的要求以及 CAD/CAM 技术的要求仍有一定的差距; 另外, 人体自动扫描测量设备, 如德国 Tecmath 公 司 的 VITUS 人 体 扫 描 仪 等 , 价 格 都 十 分 昂 贵 , 不 太 适 合 目 前中国大部分中小服装企业[3] 。本文在参阅了各种资 料 后 , 选 用 三 维 人 体 建 模 软 件 POSER 来 获 得 人 体 三 维 数 据 。POSER 是 美 国 Curious Labs 开发的三维人体图像和动画软件, 是 迄 今 使 用 范 围 最 广 的 人 体 造型软件。该软件提供了大量现成的人体模型, 同时可以调整四肢和 身体的尺寸比例。另外, 该软件提供了多种各式的数据输出, 如 DXF, OBJ,3DS,BMP 等, 可以使其中的人体数据很方便的与其他软件进行交 互[4] 。
【key wor ds】POSER software; OBJ files; triangulation; 3D emulational mannequin
随着服装业的发展和消费者对服装的和体度, 舒适度的要求的提 高 , 市 场 对 三 维 服 装 CAD 的 需 求 也 大 幅 增 加 , 智 能 化 , 信 息 化 的 三 维 服装 CAD 开发已成为当今服装业的主流[1] 。其中三维人体建模是三维 服 装 CAD 的 基 础 , 三 维 服 装 CAD 的 网 上 定 制 , 虚 拟 试 衣 等 功 能 都 离 不 开 三 维 人 体 。目 前 使 用 的 三 维 人 体 建 模 技 术 主 要 有 基 于 特 征 的 服 装 人体曲面建模, 参数化的曲面建模, 多面体建模和以网格边界线为条 件 的 三 维 人 体 建 模 。多 面 体 建 模 技 术 是 一 种 设 计 者 的 构 思 来 进 行 局 部 处理并生成人体模型的方法, 可以灵活的进行人体 结 构 设 计[2] 。 本 文 采用多面体建模技术, 从 POSER 软件中提出三维人体数据点的 OBJ 文件, 通过提出一种新的三角刨分算法对数据点进行优化, 利用 VC++ 和 OpenGL 建立三维人体仿真模型。
}
2.3 实现效果
本文利用上面提到的重建人台模型的算法, 以 VC++为平台, 结合
OpenGL 建立三维人台模型。生wk.baidu.com的人台线框图和光照渲染效果图如
下:
3.结论 本 文 通 过 POSER 软 件 获 取 三 维 人 体 数 据 , 在 VC++框 架 下 , 利 用 OpenGL 技术, 采用多面体建模技术生成服装三维人体。在本文的基础
上可以进一步进行人体与服装相关尺寸的提取, 也可以进行曲面拟 合, 制作高真实性的三维人体, 为制作能够实现服装选购的网络化, 三 维试衣等功能的 CAD 软件提供了一种快捷有效的解决方案。科
● 【参 考 文 献 】
[ 1] 徐美玲.服装 CAD 在服装业中的应用与发展[ J] .纺织导报.2002(2):24- 26. [ 2] 朱李丽, 邓中民, 李刚炎.三维服装 CAD 中人体建模综述[ J] .武汉科技学院学 报.2004(1): 19- 21. [ 3] 雒薇艳, 李凤仙, 甘应进.国内外服装 CAD 操作系统的对比与展望[ J] .吉林工 学院学报.2002,23(2):59- 61. [ 4] 叶洪涛.Poser 基础教程[ M] .北京: 清华大学出版社.2005.9. [ 5] 向南平, 左廷英, 江资斌.OpenGL 中 Maya 模型的应用[ J] .微型电脑应用.2002 (10): 29- 32.
for(int whichVertex = 0; whichVertex < 3; whichVertex++)
{
// 获得面对每个点的索引
int index = pObject- >pFaces[j].vertIndex[whichVertex];
// 给出法向量
glNormal3f (pObject - >pNormals [index].x, pObject - >pNormals [
glBegin(GL_TRIANGLES); // 遍历所有的面 for(int j = 0; j < pObject- >numOfFaces; j++) { // 遍历三角形的所有点
233
科技信息
○高校讲坛○
SCIENCE & TECHNOLOGY INFORMATION
2008 年 第 1 期
记录每一个点的指针。建立点链表动态向内存申请 Node 类对象的存 储 区 域, 将 其 指 针 加 入 到 NodeList 和 NodeArry 中, 从 最 内 部 的 点 开 始, 直至将全部点都加入到链表中。计算出三角形数 TriNum, 此时三 角形号 num 赋零值。
步骤 2: 创建第一个三角形。 (1)从点链表中取出第一个点 P1, 遍 历 点 链 表 NodeList, 计 算 相 邻 各点 距 离, 寻 找 最 近 的 点 P2, 以 P1 P2 为 基 边 用 准 则 4 找 第 三 点 P3, 则 P1, P2, P3 为顶点的三角形。将 P1, P2, P3 的索引号读入点三角形 数组(Delaunay List)中。 (2)扩展初始边 P1P2。 (3)更新点 P1,点 P2,点 P3 的表边。 步骤 3: 循环扩展所有三角形。 (1)取出当前 的 三 角 形 3 个 顶 点 P1,P2, P3 其 中 边 P1P2 是 不 需 扩 展的边, P3P1 需要扩展。 (2)扩展边 P3P1。 (3)以 P3, P1 为 基 边 用 准 则 4 找 第 四 点 P4, 则 P1, P3, P4 为 顶 点 的三角形。将 P1, P3, P4 的索引号读入点三角形 数 组 (Delaunay List) 中。 (4)若 num<=TriNum, 返回步骤 2; 否则, 步骤 4。 步骤 4 算法结束。此时三角形数组(Delaunay List)中保留了构成模 型的所有三角形的 3 个顶点的索引号值。 2.利用 VC++和 Ope nGL 实现三维人体的建立 OpenGL 是一种独立的图形硬件接口, 具有高性能的交互式三维 图形建模能力和跨平体性, 是从事三维图形开发工作的必要工具[7]。 VC++是 Windows 环境下功能最强大的编程工具, VC++中 可 以 直 接 嵌 入 OpenGL 语句, 是 OpenGL 天 然 的 开 发 工 具 。 故 本 文 利 用 VC++和 OpenGL 实现三维人体的建立。 2.1 建模步骤 实现人体建模的过程中, 我们首 先 从 OBJ 文 件 中 读 取 人 体 各 部 件曲面的顶点信息, 将各个部件的信息以链表的形式储存起来, 然后 遍历链表中的每一个节点, 使用 Delaunay 三 角 剖 分 , 然 后 再 求 出 各 顶 点的法向量。最后利用 OpenGL 强大的消隐、着色等三维显 示 和 处 理 功能, 重建人体各部件的曲面。这样, 遍历完整个链表, 将链表上的每 个部件的曲面都显示出来, 就完成了整个人体的重建。 2.2 生成人体模型的主要程序 我们读入包含三维人体数据的 OBJ 文件, 从文件中读出每个面所 包含的三个顶点的坐标值, 通过函数 glVertex3f()来绘制每一个小三角 形面, 通过索引来将小三角形面进行连接, 生成三维人体网格, 并对每 一个小三角形面进行光照处理。主要程序如下: