950 likes | 1.18k Views
第 5 章 动画. 动画 (animation) 是运动的艺术,运动是动画的本质 本章先介绍动画的基本原理与发展历史,然后讲解传统与计算机动画的基本内容 重点放在图形动画的描述语言和计算机动画的制作上,主要介绍 X3D 和 SVG 标准,以及位图动画和 OpenGL 的基本编程,最后简介万维网动画技术 WebGL 5.1 概述、 5.2 传统动画、 5.3 计算机动画 5.4 动画制作的软件、语言和接口 5.5 X3D 、 5.6 SVG 、 5.7 位图动画编程 5.8 OpenGL 编程简介、 5.9 WebGL. 5.1 概述.
E N D
第5章 动画 • 动画(animation)是运动的艺术,运动是动画的本质 • 本章先介绍动画的基本原理与发展历史,然后讲解传统与计算机动画的基本内容 • 重点放在图形动画的描述语言和计算机动画的制作上,主要介绍X3D和SVG标准,以及位图动画和OpenGL的基本编程,最后简介万维网动画技术WebGL • 5.1 概述、5.2 传统动画、5.3 计算机动画 • 5.4 动画制作的软件、语言和接口 • 5.5 X3D、5.6 SVG、5.7 位图动画编程 • 5.8 OpenGL编程简介、5.9 WebGL
5.1 概述 5.1.1 视觉滞留原理 • 动画与电影和电视都是利用人的视觉滞留现象和心理认可特征所产生的错觉来实现连续运动视觉的 • 视觉滞留(persistence of vision)原理是指,由于人眼感光细胞中的生物化学和生物物理学反应、以及视神经和视觉中枢的信号处理都需要一定的时间,所以物体在眼睛的视网膜中成像后,并不会立即消失,而是保留25 ~ 200ms,即1/40 ~ 1/5秒,相当于40 ~ 5帧/秒。因此,如果快速播放一系列相关的离散画面,就会使人产生连续的运动视觉(幻觉) • 视觉滞留的原理是由比利时物理学家约瑟夫·普拉托于1829年发现的 • 20世纪60年代,人们发现,将银幕上实际是跳跃且不连贯的图像看成一个统一且完整的连续动作,其实真正起作用的并不是“视觉滞留”,而是“心理认可”
影视和动画的典型帧率: • 电影: • 老片—16帧/秒 • 普通—24帧/秒 • 数字—30帧/秒 • 电视: • PAL—25帧/秒 • NTSC—30帧/秒 • 动画:10~30帧/秒 • 虽然动画与电影电视的工作原理相同,但电影和电视主要是用摄影机和摄像机拍摄出来的真实画面,而动画则是人工或计算机画出来的虚假画面
5.1.2 动画的发展简史 • 中国古代(始于秦汉):走马灯 • 1820年英J. Paris:圆盘两面画的旋转设备thaumatrope • 1831年法J. Plaleau:转盘狭缝phenakistoscope • 1834年英W. Horner:转笼zoetrope(西洋镜) • [1891年美T. Edison(爱迪生):活动电影视镜] • [1895年法L./A. Lumiere兄弟:电影放映机] • 1906年美J. Blackton:第一部动画片——滑稽的面孔1928年美W. Disney(迪斯尼)第一部商用动画片 • [1937年英国开始黑白电视广播] • 1963年Bell实验室:第一部计算机动画 • 1974年P. Foldes:动画片“饥饿”在戛纳电影节上获奖 • 1991/1993年:终结者II/侏罗纪公园均获奥斯卡最佳视觉特效奖
5.1.3 应用领域 • 传统动画主要用于动画电影的制作,也少量用于电视广告和电化教学等方面 • 计算机动画则渗透到运动视觉媒体的方方面面,应用领域十分广泛,包括: • 电子/计算机/网络游戏 • 电影和电视特技 • 动画片制作(2D辅助和3D模型) • 动态广告 • 模拟器(飞行/汽车) • 教育(MCAI多媒体计算机辅助教学) • 科研(可视化)
5.2 传统动画 • 动画 = animation生气活泼、热情兴奋 • 简单定义:动画是动态生成系列相关画面以产生运动视觉的技术 • 复杂定义:动画是一门通过在连续多格的胶片上拍摄的一系列单个画面,并以一定的速度放映,从而产生运动视觉的技术 • 修改: • 画面纪录:胶片上→磁盘、磁带、光盘等存储介质 • 放映设备:银幕→电视、显示器、投影仪等 • 运动对象:实体运动→颜色、纹理、灯光等的改变 • 动画片 = animation = cartoon(卡通片,[报刊上的政治性]漫画)
制作过程 剧本故事板 设计稿(难:包括人物/造型/动作/色彩/气氛等) 声音节拍(与电影后期配音不同) 关键帧(难)中间画 测试(铅笔稿) 描线上墨上色 检查 拍摄 后期制作(包括:编辑、剪接、对白、配音、字幕等)
名词术语 • 格——一个画面,动画片的最小单位。十分钟的动画(24帧/秒)需14,400格 • 幅——每个画面通常由若干张[透]明片叠合而成,每张“明片”为一个对象(的某一部分)称之为幅 • 关键帧——动作的极限(主要/转折)位置,通常由老师傅来画 • 小原画——两个关键帧之间的若干小关键帧,由小画师画 • 中间画——两个关键帧之间的若干过渡,由画工画
5.3 计算机动画 • 计算机动画 = computer animation • 定义:用计算机生成一系列可供实时演播的连续画面技术 • 分级: • 图形编辑(叠加、着色、特技) • 中间画生成(变形) • 活动对象操纵(位置、属性、算法、运动) • 角色定义(语义级,术语规定) • 智能动画(故事动画[中科院陆汝钤],可学习和扩充)
5.3.1 计算机动画分类 可以依据不同特征来给计算机动画分类,如 • 作用 • 计算机辅助动画——传统二维动画的补充,利用计算机辅助工作。如填色、叠加、生成中间画、制作特效等,如动画片花木兰和二维游戏 • 模型动画——三维造型、动作设计、场景渲染等。如动画片玩具总动员和三维游戏 • 等级 • 低级——需人工显示规定每个物体和人物的位置、属性、各种运动参数,如现有动画系统和软件 • 高级——可用通用术语来规定运动、智能化。正在研制开发
时间 • 逐帧动画——先生成后播放,对硬件性能要求不高。如早期的动画系统和软件 • 实时动画——边生成边播放,对硬件性能要求较高。如早期的SGI工作站和现在普通的PC机,电子游戏 • 控制 • 关键帧动画——简单运动学 • 算法动画——复杂运动学,部分动力学 • 物理动画——自动控制,动力学(落体、流体、变形、爆炸),随机、分形 • 维数 • 2D——简单,平面美术设计。如Flash • 3D——复杂,三维造型、动作设计、透视、消隐、光照、材质、场景渲染等。如3DS
生成 • 矢量——采用图形学的方法生成动画,记录的是图形的各种参数。在演播时,可以实时渲染,也可以先渲染好(称为位图系列)后再播放。如Flash和3DS • 位图——动画以位图形式出现,可以是矢量动画渲染后的结果。如GIF动画、fli、avi、mov • 分辨率 • 低——320*240(VCR/VCD级) • 中——1K*1K(16mm胶片/DVD级) • 高——2K*2K(35mm胶片级) • 超——4K*4K(70 mm胶片级) • 最常用的计算机动画分类方法是:“辅助/模型”或等价的“2D/3D”动画
计算机动画技术 • 1.技术基础——计算机图形学、数字图像处理、三维几何造型、真实感图形、物理造型、人体动画等等 • 2.相关学科——美术、绘画、力学、人体运动学、机器人学、生物学、生理学、心理学、人工智能、计算机科学等等 • 3.研究内容——形体造型、运动控制与描述、图形绘制、动态模拟、集成环境、关节/人体运动、动画语言系统、硬件接口、特技
4.三维图形学——是三维造型、三维动画和虚拟现实的基础和核心4.三维图形学——是三维造型、三维动画和虚拟现实的基础和核心 • 三维造型:物体表面、简单物体/自然物体/人体 • 真实感图形:透视、消隐、材质、纹理、光照、渲染 • 5.3D标准——三维图形和动画及虚拟现实系统的国际和事实标准有: • 开放图形库——OpenGL(Open Graphics Library) • 直接三维——Direct3D(Microsoft DirectX的组成部分) • 爪哇三维——Java 3D(Sun公司Java语言的组成部分) • 虚拟现实建模语言——VRML(Virtual Reality Modeling Language,用于Web) • 可扩展三维——X3D(eXtensible 3D,VRML的发展,基于XML) • 针对嵌入式系统的开放图形库——OpenGL ES(OpenGL for Embedded Systems,科纳斯组织制定); • 万维网图形库——WebGL(Web Graphics Library,科纳斯组织制定)
2D——常见的二维网页图形动画的标准有: • 国际标准: • 可伸缩矢量图形——SVG(Scalable Vector Graphics,基于XML) • 事实标准: • 闪光——Flash(Macromedia/Abobe公司) • 银光——Silverlight(Microsoft公司)
5.4 动画制作的软件、语言和接口 • 动画制作可以分成两类: • 用户级——使用现成的商用动画制作软件和描述性的动画描述语言,进行复杂的3D造型和简单的动画设计。对使用者要求不高,但是产品的交互性不够、效率也不高 • 程序员级——使用高级语言和图形动画API,进行简单的3D造型和复杂的动画设计。对程序员要求较高,但是产品的交互性好、效率也很高 这两类方法各有特点,具有一定的互补性,且各有自己不同的主要应用领域 • 下面列出常见的动画制作软件、描述语言和API
5.4.1 动画制作软件 1.二维动画 • 位图动画(GIF) • 台湾友立公司的Ulead GIF Animator • 微软公司早期的Microsoft GIF Animator • Liatro soft公司的Babarosa Gif Animator • Alchemy Lab公司的Alchemy GIF Animator • CoffeeCup Software公司的CoffeeCup GIF Animator • 矢量动画(Web) • Adobe / Macromedia公司的Flash(2005年12月3日Macromedia被Adobe收购) • Microsoft公司的Expression Blend(用于设计Silverlight)
2.三维动画 • 台湾友立公司的三维文字制作软件Ulead Cool 3D • Autodesk公司的3ds max • Autodesk / Alias|Wavefront公司的三维动画软件Maya(2005年10月Alias被Autodesk收购) • Amabilis Software公司的自由三维动画软件3D Canvas
5.4.2 动画描述语言 • 动画描述(标记)语言主要有如下三种基于Web网(WWW,World-Wide-Web,万维网/环球网)的国际标准: • 三维图形动画和虚拟现实的Web3D标准: • VRML(Virtual Reality Modeling Language,虚拟现实建模语言) • X3D(eXtensible 3D,可扩展三维[基于XML]) • 基于XML的二维图形和动画标准: • SVG(Scalable Vector Graphics,可伸缩矢量图形) • 因为VRML标准已经被基于XML的X3D替代,所以后面的5.5和5.5节只对X3D和SVG分别加以简单的介绍
5.4.3 动画编程接口 常见的图形动画编程接口(API)有: • 国际标准: • 开放图形库——OpenGL(Open Graphics Library,现由科纳斯组织管理) • 事实标准: • 直接三维——Direct3D(Microsoft DirectX的组成部分) • 爪哇三维——Java 3D(Sun领导的JCP制定) • 针对嵌入式系统的开放图形库——OpenGL ES(OpenGL for Embedded Systems,科纳斯组织制定,OpenGL的子集) • 万维网图形库——WebGL(Web Graphics Library,科纳斯组织制定,基于OpenGL ES)
5.5 X3D • X3D(eXtensible 3D,可扩展三维)与VRML都是万维网3D联盟(Web3D Consortium,http://www.web3d.org/)开发的图形动画描述语言 • 基于XML的X3D是VRML的发展和替代 • XML(Extensible Markup Language 可扩展标记语言)是W3C(World Wide Web Consortium万维网协会)于1998年制定的一种数据描述元语言的国际通用标准,已经获得了非常广泛的支持和应用。本书的15.2的第4小节和第18章将对XML作较为详细的介绍 • X3D是一个用XML描述的3D文件格式的开放标准,使得在所有[网络]应用程序之间进行3D数据通信成为可能。与其前辈VRML相比,X3D标准更加成熟和精致 • X3D包括4个部分:内核(核心特征集)、VRML 97特征集、应用程序接口和扩展集 • X3D实现了与VRML 97的兼容,能提供VRML 97浏览器的全部功能
5.5.1 简史 • 1994年10月公布了(由SGI公司的Mark Pesce起草,并经VRML邮件列表成员修订的)VRML 1.0规范 • 1996年8月VRML联盟(VRML Consortium Incorporated)推出VRML 2.0 • 1998年1月VRML成为国际标准VRML97(ISO/IEC 14772-1:1997 Information technology -- Computer graphics and image processing -- The Virtual Reality Modeling Language,信息技术——计算机图形学和图像处理——虚拟现实建模语言) • 1998年2月W3C公布XML 1.0标准 • 1998年11月VRML联盟更名为Web3D联盟 • 2004年8月9日X3D成为国际标准:ISO/IEC 19775 Information technology -- Computer graphics and image processing -- Extensible 3D (X3D),信息技术——计算机图形和图像处理——扩展3D(X3D)。并于2008年7月/2013年11月和2010年9月分别对其第1和第2 部分进行了更新。该标准分为如下两个部分: • 第1部分:体系结构和基本组件——ISO/IEC 19775-1:2004/2008/2013 Part 1: Architecture and base components • 第2部分:场景访问接口(SAI)(ISO/IEC 19775-2:2004/2010 Part 2: Scene Access Interface (SAI))
5.5.2 特性 X3D具有如下新特性: • XML集成:Web服务、分布式网络、跨平台、交互应用文件和数据传输 • 组件化:允许轻量级内核3D运行时分发引擎 • 可扩展:适应特殊应用需要的标准化扩展集 • 进化:容易更新,并保留VRML97作为X3D的内容 • 广播/嵌入应用就绪:从移动电话到超级计算机 • 实时:绘图技术是高品质、实时、交互的,并且包括音频和视频以及3D数据 • 规范说明良好清晰:容易创建一致、相容、且无故障的实现
5.5.3 功能 • 3D图形:多边形几何、参数几何、层次变换、光照、材质、多遍/多级纹理映射、像素和顶点遮挡、硬件加速 • 2D图形:空间化文本、2D矢量图形、2D/3D合成 • CAD数据:一种转换CAD数据到出版和交互媒体的开放格式 • 动画:计时器与插补器驱动连续动画、拟人的动画和变形 • 空间化音频和视频:视听源映射到场景几何上 • 用户交互:基于鼠标的检取和拖带、键盘输入 • 导航:照相机/摄像机、用户在3D场景中移动、碰撞、接近度与可见性检测; • 用户定义的对象:具有通过创建用户定义的数据类型来扩展内置浏览器功能的能力 • 脚本:提供通过编程和脚本语言来动态改变场景的能力 • 联网:提供由网络资源构成单一X3D场景的能力、到其他场景或位于万维网上的资源对象的超链接 • 物理模拟:拟人动画、地理空间数据集、与DIS(Distributed Interactive Simulation发布室交互仿真)集成
X3D与VRML • X3D继承了VRML的工作原理,而在描述和文件组织上发展了新的形式(采用了XML语言) • 简单的说,X3D是把VRML97分解为组件,并使用可加入新组件的机制,来扩展VRML97的功能 • VRML与X3D最大的区别在于:VRML中浏览器读取的不是三维数据而只是一种文本描述,X3D中采用的则是XML描述的实际三维数据。这样就可以建立照片级的三维模型,而且还可通过压缩技术将数据压缩并实时播放,不用下载整个文件后才显示三维对象
5.5.6 例子 • 目前的主流浏览器还不能直接支持对X3D文件(扩展名为x3d、x3dv或wrl)的浏览,需要安装X3D插件 • 也可采用专门的X3D浏览器,例如: • Web3D联盟用Java开发的Xj3D(http://www.xj3d.org/) • Dave Huffman采用QT库和OpenGL编写的Carina(船底[星]座)(http://ariadne.iz.net/~entigo/)
移动盒子例(取自Xj3D) moving_box.x3dv: #X3D V3.0 utf8 PROFILE Interactive DEF TS TimeSensor { cycleInterval 10 loop TRUE } DEF TG Transform { children Shape { geometry Box {} appearance Appearance { material Material { diffuseColor 1 0 0 } texture ImageTexture { url ["Xj3D-256x256.jpg"] } } } } DEF PI PositionInterpolator { key [ 0 0.25 0.5 0.75 1 ] keyValue [ 0 0 0 -1 0 0 -1 1 0 0 1 0 0 0 0 ] } ROUTE TS.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO TG.translation
“移动盒子”例子的输出(右边是Xj3D-256x256.jpg)“移动盒子”例子的输出(右边是Xj3D-256x256.jpg)
5.6 SVG • SVG(Scalable Vector Graphics,可伸缩矢量图形)是W3C推出的一种基于XML的二维图形(动画)的描述语言标准 • 已经公布的推荐标准: • SVG 1.0(2001.9.4)、1.1(2003.1.14)、1.1 第二版 (2011.8.16) • SVG Mobile 1.1(2003.1.14) • SVG Tiny 1.2(2008.12.22)
正处于开发过程中的SVG工作草案 • SVG Full 1.2(2005.4.13),将被抛弃,由SVG 2.0取代 • SVG 2.0: • 草案正在制定过程中,将取代SVG 1.2 • SVG 2.0综合了许多Web新内容,包括CSS、HTML5(2014年10月28日[昨天]成为W3C的正式推荐标准)和WOFF(Web Open Font Format,Web开放字体格式)等 • 当前最新的工作草案(W3C Working Draft)是2014年2月11日发布的 • 当前最新的编辑草案(W3C Editor’s Draft)是2014年10月10日发布的
SVG概述 • SVG是采用XML来描述二维图形的一种语言。它支持三种类型的图形对象:矢量图形形状(如包含直线和曲线的路径)、图像和文本 • 图形对象可以被分组、设置风格、变换和合成进以前渲染过的对象之中。其特征集包括嵌套变换、裁剪路径、α掩模、过滤效果和模板对象等 • SVG的绘图可以是交互和动态的,可以定义动画,并采用两种方法来触发——直接触发(即在SVG内容中嵌入SVG动画元素)或通过脚本触发 • 复杂的SVG应用程序,可以使用附加的脚本语言来访问SVG的DOM(Document Object Model,文档对象模型),它提供对所有元素、属性和特征的完全访问。已经为SVG设置了丰富的事件处理器集,例如,针对任何图形对象的onmouseover与onclick • 因为SVG对其他Web标准的兼容性和杠杆作用,像脚本描述等特征,可以在同一网页的XHTML和SVG元素上进行 • SVG是一种针对丰富图形内容的语言。可以利用SVG的工具,在SVG内容中包含更高级别的信息,从而实现可达性
SVG的特点 • SVG的基本特点: • 基于XML标准 • 矢量图形 • 文本描述 • 文件格式灵活 • 交互性 • 内嵌字型数据 • SVG 1.1版新增加的一些特点: • 模块化 • 元素和属性集合 • 规范的子集
使用方法 • SVG的MIME类型为image/svg+xml • SVG文件的扩展名为svg(非压缩文件)和svgz(gzip压缩文件) • 在网页中使用SVG代码的方法有多种: • 独立的SVG文件单独用作网页的内容 • 嵌入引用:独立的SVG文档可以嵌入到父网页之中,具体方法有: • 最常用的是使用[X]HTML的img元素 • 使用[X]HTML的object元素 • [X]HTML的applet元素,可以调用Java小应用程序来观看SVG内容 • 内联嵌入:可以在XHTML等文档中直接嵌入SVG的代码内容 • 外部链接:在HTML文档中使用a元素,调用用户系统上已经安装的独立SVG浏览程序,来观看独立SVG文档的内容 • 被引用:由网页中的CSS2或XSL的属性来引用独立的SVG文档 老板的普通浏览器并不直接支持SVG,需要安装SVG插件或使用单独的SVG浏览程序。例如Adobe SVG Viewer等。不过新版的浏览器大多支持或部分支持SVG
例子 • 红色圆盘——下列代码在屏幕上显示一个圆心在(100,75)、半径为60、填充红色的圆盘( RedCirle.svg): <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg width="200" height="150" xmlns="http://www.w3.org/2000/svg"> <circle cx="100" cy="75" r="60" fill="red" /> </svg>
动画例(anim.svg) <?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN“ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg width="5cm" height="3cm" viewBox="0 0 500 300" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" > <desc>Example animMotion01 - demonstrate motion animation computations</desc> <rect x="1" y="1" width="498" height="298" fill="none" stroke="blue" stroke-width="2" /> <!-- Draw the outline of the motion path in blue, along with three small circles at the start, middle and end. --> <path id="path1" d="M100,250 C 100,50 400,50 400,250" fill="none" stroke="blue" stroke-width="7.06" /> <circle cx="100" cy="250" r="17.64" fill="blue" /> <circle cx="250" cy="100" r="17.64" fill="blue" /> <circle cx="400" cy="250" r="17.64" fill="blue" />
<!-- Here is a triangle which will be moved about the motion path. It is defined with an upright orientation with the base of the triangle centered horizontally just above the origin. --> <path d="M-25,-12.5 L25,-12.5 L 0,-87.5 z" fill="yellow" stroke="red" stroke-width="7.06" > <!-- Define the motion path animation --> <animateMotion dur="6s" repeatCount="indefinite" rotate="auto" > <mpath xlink:href="#path1"/> </animateMotion> </path> </svg>
5.7 位图动画编程 • 所谓位图动画就是先制作好一系列表示连续画面的位图,然后按一定的时间间隔一幅接一幅地显示这些位图,就可以产生动画效果。 • 因为制作位图需要美术与动画知识,我们这里不讲,而只介绍如何显示位图以产生动画效果。里面需要用到位图资源、位图传送和计时器操作
5.8 OpenGL编程简介 • OpenGL是图形硬件的软件接口之国际标准,可用来开发交互式三维图形应用程序,它源于SGI公司的GL (Graphics Library)。它适用于所有计算机平台,包括Windows、MacOS、Unix和Linux • OpenGL标准由1992年成立的独立协会OpenGL ARB (The OpenGL Architecture Review Board)负责管理 • OpenGL标准版本:1.0版(1992.7.1)、2.0(2004.9.7)、3.0(2008.8.11 )、4.0(2010.3.11),当前最新版为2014年8月11日推出4.5版 • 微软的Visual C++从2.0起支持OpenGL( 1.1版)编程,Windows从WinNT / Win95起将OpenGL作为标准设备加以支持
1)工作过程 (1) 工作步骤 OpenGL工作过程的主要步骤有: • 构造几何要素(点、线、多边形、图像、位图),创建对象的数学描述 • 在三维空间中放置对象,选择观察点 • 计算对象的颜色(直接计算或由光照与纹理间接给出) • 光栅化——将对象的数学描述和颜色信息转换成屏幕像素(可能执行消隐和对像素的操作)
(2) 操作种类 • 几何操作 • 针对每个顶点的操作——模型取景矩形变换、纹理坐标变换、传递到几何要素装配 • 几何要素装配——随着几何要素的类型而不同,有明暗处理、平面剪裁、剔除检验,最后根据点图案、线宽、点尺寸等生成像素段,并给其赋上颜色和深度值 • 像素操作 • 将主机读入的像素经放大、偏置和映射处理后写入纹理内存,可在纹理映射中使用或光栅化成像素段 • 对从帧缓存读入的像素数据,执行像素传输操作(放大、偏置、映射、调整)后,以适当的格式压缩并返回给主存 • 像素拷贝操作 = [(解)压缩 +] 传输操作 • 像素段操作——纹理化产生纹素、雾效果计算、反走样处理、剪裁处理、α检验、模板检验、深度缓冲区检验、抖动处理、逻辑操作/混合操作、颜色屏蔽/指数屏蔽
Unix与Windows平台OpenGL库与应用程序的关系 GLU = OpenGL Utility Library GDU = Graphics Device Utility WGL = Windows Graphics Library
辅助库中的若干三维物体绘制函数 void auxWireSphere(GLdouble); void auxSolidSphere(GLdouble); void auxWireCube(GLdouble); void auxSolidCube(GLdouble); void auxWireBox(GLdouble, GLdouble, GLdouble); void auxSolidBox(GLdouble, GLdouble, GLdouble); void auxWireTorus(GLdouble, GLdouble); void auxSolidTorus(GLdouble, GLdouble); void auxWireCylinder(GLdouble, GLdouble); void auxSolidCylinder(GLdouble, GLdouble);
void auxWireIcosahedron(GLdouble); void auxSolidIcosahedron(GLdouble); void auxWireOctahedron(GLdouble); void auxSolidOctahedron(GLdouble); void auxWireTetrahedron(GLdouble); void auxSolidTetrahedron(GLdouble); void auxWireDodecahedron(GLdouble); void auxSolidDodecahedron(GLdouble); void auxWireCone(GLdouble, GLdouble); void auxSolidCone(GLdouble, GLdouble); void auxWireTeapot(GLdouble); void auxSolidTeapot(GLdouble);