D0I:10.13374/j.issn1001053x.2000.03.023 第22卷第3期 北京科技大学学报 Vol.22 No.3 2000年6月 Journal of University of Science and Technology Beijing June 2000 虚拟现实中体视动画的生成算法 李畅》黄心渊)丁予展》 1)北京科技大学资源工程学院,北京1000832)北方工业大学计算中心,北京100041 摘要根据人的双眼能看到景深的原理,给出了在虚拟现实系统中生成体视动画的3种算 法,阐述了其推导过程、结论及用途,并进行简明的分析比较 关键词体视:动画:算法:虚拟现实 分类号TP391.4 在虚拟现实系统中,看到的图像是栩栩如 Ax+By+Cz+D=0 (1) 生的立体图像.为什么能在二维(平面)上产生 I点与S点的连线和视平面P的交点为S, 三维的立体图像,,即产生体视图像对呢?从 就是左眼观看I时的图点,坐标为(,):I点 虚拟现实中视觉显示的角度来讲,这主要是利 与S点的连线和视平面的交点为SR,即为右眼 用人的双眼视差原理,在计算机上实现时巧妙 观看1时的图点,坐标为(,).要合成I点体 地使用正负视差产生体视图像对,又利用了透 视图,就必须求得点(SS)的坐标. 视图的投影原理,推导出双眼的体视算法,然后 根据透视的位似对应性质:任意一对对应 由计算机产生左、右视点的视图,再经过渲染、 点到对应中心的距离之比为一常数,所以左视 合成等步骤产生体视动画.下面讨论生成体 线的方程式可表示为: 视动画的几种算法 -x-=y=-A=6 (2) X,-xy一hz一zi 1点的体视投影的常规算法 右视线的方程式可表示为: (3) 只有人眼睛的左、右视点分别生成两幅图, 这时,左视线方程式可写为: 才能观察到体视效果.所以观察时就必须让左、 x=x+(x-x1)h 右眼分别看到根据左、右视点生成的图). y=y+y,-y)4 (4) z=z+(z,-z孙t 右视线的方程式可写为: [x=x+比-x)t =y+0y,-y)4 (5) ●S z=z+(z-z)4 Ix.y.z) 将式(4)(5)分别代入平面方程式(1)可求得: =一 Ax+By+Cz+D A(x-x)+B(y-y)+C(z-z) 一视平面 (6) Ax+By+Cz+D 图1点的体视投影 =Ac,-x开B0,-y+C2-2Z Fig.1 Stereoscopy projection of points 将式(6)代入式(4)可得左视线的图点坐标为: x=(x-)什x 如图1所示,I为三维空间中任一点,S为左 y=(v-n)tty (7) 视点,S为右视点,其坐标分别为(xy,), 君=(z-z)+a S(xy,z)和S(x,,z).视平面P的方程为: 将式(7)代入式(5)可得右视线的图点坐标为: x=(-x)+x 1999-12-20收稿李畅男,36岁,副教授,博士 y:=(y-y)t+y. (8) *国家“863”计划资助项目No.863-306-ZT03-08-1) =(z-z)1+z
第 卷 第 期 州 】 年 月 北 京 科 技 大 学 学 报 匕 虚拟现实中体视动画的生成算法 李 畅 ” 黄心 渊 , 丁 予展 ” 北京科技大学资源工程学院 , 北京 北方工业大学计算中心 , 北京 们 摘 要 根据 人 的双眼 能看 到 景深 的原理 , 给 出 了在虚拟现 实系统中生成体视动 画 的 种算 法 , 阐述 了其推 导过程 、 结论及 用 途 , 并进行 简明 的分 析 比 较 关键词 体视 动 画 算法 虚 拟 现实 分类号 在 虚 拟 现 实系统 中 , 看 到 的 图像 是栩 栩 如 生 的立体图像 为什么 能在二 维 平 面 上 产生 三 维 的立 体 图像 ‘ 刀 , 即产 生 体 视 图像 对 呢 从 虚拟现 实中视觉 显 示 的 角度来讲 , 这 主 要 是 利 用 人 的双 眼视差 原理 〔习 , 在 计 算机上 实现 时 巧妙 地 使用 正 负视差 产 生 体 视 图像 对 , 又 利用 了透 视 图的投影 原理 , 推 导 出双 眼 的体视算法 , 然后 由计算机产 生 左 、 右 视 点 的视 图 , 再 经 过 渲 染 、 合 成等步骤产 生 体 视 动 画 『, 下 面 讨 论生 成 体 视 动 画 的几 种算法 众 均叶〔 毖十 点与及 点的连 线和 视平面 尸 的交点为义 , 就 是 左 眼 观 看 时 的 图点 , 坐 标 为 尹才 点 与 点的连线和 视平面 的交 点 为又 , 即 为 右 眼 观 看 时 的 图点 , 坐 标为伏君才 要 合 成 点 体 视 图 , 就 必 须 求得点 夕 ,邵 的坐 标 根据 透视 的位似对应 性质 任意 一 对 对应 点 到对应 中心 的距 离之 比为 一 常数 所 以左 视 线 的方程 式可 表 示 为 对二三 乏二之 羞二鱼一 。 点的体视投影的常规算法 只 有人 眼 睛 的左 、 右 视 点分 别 生 成 两 幅 图 , 才能观察到体视效果 所 以观 察时就 必 须让 左 、 右 眼 分别 看 到根 据 左 、 右 视 点 生 成 的 图 ‘ 兀 一 另一 二一 右 视 线 的方程 式可 表 示 为 丝卫 竺 之二艺 兰上圣一 一 卫一夕 一 这 时 , 左 视 线方 程式 可 写 为 协汉﹄份一 一 一 ’ , 一, 叮 一 孙娜 一刃 “ 夕 十怀一二少 右 视 线 的方程 式可 写 为 ,扔肋 将式 戈汁,一 升十以一另 ,一 分别代 入平面 方程式 可 求得 图 点的体视投影 咭 · 一 以一另 创局一 将式 代入式 可得左视线的图点坐标为 如 图 所 示 , 为三 维 空 间 中任 一 点 , 为左 视 点 , 从 为 右 视 点 , 其 坐 标 分 别 为,扔劝 , 及 仍汤 和 从 , , 动 视 平 面 尸 的方 程 为 超 一 件 一扮 ‘ 叮 一 厂 忱 资一洲局夕石十 将式 代入式 可得右视线 的图点坐标为 一 一 收稿 李畅 男 , 岁 , 副 教授 , 博 士 国家 “ 计划 资助项 目困 一 一 一 一 拼二况霖 若 一 夕乙十艺 DOI :10.13374/j .issn1001-053x.2000.03.023
Vol.22 No.3 李畅等:虚拟现实中体视动画的生成算法 ◆275 根据点的体视投影算法和所要进行动画模 X.l=X+Kp=x-乙Zxe2 型的线、面、体的特性,我们就可以算出线、面、 Z+d (11) 体的体视投影,然后用计算机编程的方法,产生 X.mn=X,tXi =ExdiZxel2 Z,+d (12) 体视图像对.但是,这样产生一幅非常理想的体 因为在Y方向无偏移,所以得: 视动画很困难,要用许多时间和很多经费才能 Ya=Y,:=Y,=Yodl(zp+d) (13) 完成一幅简单的体视动画刊. 根据上面的推导,即可得出2台摄像机的 屏幕像素位置坐标的计算公式: 2摄像机式投影法 Xom=(Xd-Zx e/2)/(d+Z) (14) 在摄像机模式中,投影平面位于Z=0处.假 Xmm:=(Xd+Z x e/2)/(d+Zp) (15) 定2台摄像机的视轴平行而且焦距很短,2台摄 Ycml=Ynd/dtZo)) (16) 像机之间的水平距离为空间变量e个单位,定 Yem=Ypd/(d+Zp) (17) 位在距离原点为一d个单位的位置处,左侧的摄 在上面的计算公式(14)~(17)中,两眼的视 像机为CamL,右侧的摄像机为camR,则camL 图屏幕坐标中Y分量是相同的,因为我们不希 到Z轴的距离为-e/2,camR到Z轴的距离为 望在体视图像对中引入任何大小的垂直视差, e/2. 所以两幅图像必须采用相同的Y坐标值,就能 在单视点投影情况下,三维空间任一点 保证这一点要求.现在再看X分量,两个计算公 Px),在Z=0的投影平面上产生的投影点 式中也有一些相似的项,对此公式进行简化,就 为P(xy,),则P,坐标的计算公式: 可以在生成体视图像对的过程中节省相当大的 X:=Xd/(Zp+d) (9) 运算量.简化后的公式为: y,=YndZ。+d) (10) templ=Xd (18) 在左、右眼双视点投影情况下,如图2所示, temp2=Zp×e/2 (19) 位于左手坐标系中的三维空间任一点P(xy), temp3=d+Z (20) 对应的左视图的投影中心是camL(-e2,0,-), temp4=templ/temp3 (21) 而对应的右视图的投影中心是camR(e/2,0,-d). temp5=temp2/temp3 (22) 将P点分别以左、右视点为投影中心,在Z=0 Xosl =temp4-temp5 (23) 的X一Y投影平面上产生的投影点为(Xml,Yaml) Xom =temp4+temp5 (24) 和(XanR,YmR). Yoml =Yomr=Yd/temp3 (25) 通过以上化简运算,共节省了2次加法、1 P(xVz) 次减法、5次乘法和2次除法的运算量,如果是 扩展到成干上万个像素的运算,这样的简化就 可以节省很多时间. 任意一点的体视都可以按以下公式计算: Xa,Ymt) camR Parallax=Xoumnr-Xoamt. camL e 对于虚拟境界中的每一个物体而言,我们 视平面 都必须确定它在监视器上相应的显示位置.一 般情况下,我们可以利用上面给出的计算公式 图2摄像机投影模式 来确定物体上各个顶点的位置,然后再填充整 Fig.2 Model of camera projection 个多边形.在编写绘制软件执行上述运算的过 程中,就能够自动地分别计算出左摄像机和右 由式(9)和式(10)可得到P点在单视点情 摄像机的投影图像 况下的投影坐标.那么点P在双视点情况下,左 跟偏移为-e/2,则在Z=0的平面上的相应偏移 3体视动画的自动生成算法 量为北-号,右眼偏移为肌,则在2-0的 利用动画软件生成体视图比上述2种算法 平面上的相应偏移量为名,得所以得: 方便,下面结合计算机动画软件(3 DS MAX)中
一 李 畅等 虚 拟 现 实 中体视动 画 的生成算法 根据 点 的体视投 影 算法 和 所 要 进行 动 画 模 型 的线 、 面 、 体 的特 性 , 我们 就 可 以算 出线 、 面 、 体 的体视投影 , 然后 用 计 算机编程 的方法 , 产 生 体视 图像对 但 是 , 这样产 生 一 幅非 常理 想 的体 视动 画 很 困难 , 要 用许 多时 间和 很 多经 费才 能 完成 一 幅简单 的体视动 画 「,, 摄像机式投影法 猛 一 尤 选上翁丝 编 一 ‘ 盛上豁丝 在摄像机模式 中 , 投 影平 面位 于 于。 处 假 定 台摄像机 的视轴平行 而 且 焦 距 很 短 , 台摄 像机之 间 的水 平 距 离为 空 间变量 个单 位 , 定 位在距 离原点 为 一 个单位 的位置 处 左 侧 的摄 像机 为 , 右 侧 的摄像机 为 田 , 则 田” 到 轴 的距 离 为 一 , 田爪 到 轴 的距 离为 已 在 单 视 点 投 影 情 况 下 , 三 维 空 间 任 一 点 尸怀孙卉 , 在 二 的投 影 平 面 上 产生 的投 影 点 为只,扔 , 则只坐标 的计 算 公 式 龙 恙 乙 刃 兀 称 刃 在左 、 右 眼双视点投影情况下 , 如 图 所示 , 位于左手坐标系中的三维空 间任一 点尸帆 戈玲凡 , 对 应 的左 视 图 的投 影 中心 是 田刀 一 , ,一司 , 而 对应 的右 视 图的投影 中心 是 , ,一司 将 尸 点 分 别 以左 、 右 视 点 为投 影 中心 , 在 的方今一 投 影 平 面 上 产 生 的投 影 点 为 尤石 几 和 〔长恤只 溉翻 图 摄像机投影模式 啥 由式 和 式 可 得 到 尸 点 在 单视 点情 况 下 的投影 坐 标 那 么 点尸 在双 视 点情况 下 , 左 眼 偏 移 为 一 , 则 在 二 的平 面 上 的相 应 偏移 因 为在 方 向无偏 移 , 所 以得 鱿 耳 乙 的 根据 上 面 的推导 , 即可 得 出 台摄像机 的 屏 幕像素位置 坐 标 的计算公 式 尤泌 乙 ‘ 毋乙 尤益 价乙 击乙 其舰 称留 价耳 ’ 叮 二 耳 毋乙 在上 面 的计算公 式 一 中 , 两 眼 的视 图屏幕坐 标 中 分量 是 相 同 的 因 为我 们 不 希 望在体视 图像对 中引入 任何大 小的垂 直 视差 , 所 以两幅 图像必 须采用相 同的 坐 标值 , 就 能 保证这 一 点要求 现在再看 分量 , 两个计 算公 式 中也有一些相似 的项 , 对 此 公 式进行 简化 , 就 可 以在生成体视 图像对的过程 中节 省相 当大 的 运 算 量 简 化后 的 公 式 为 , 戈 吞 击易 无泌 一 几 位 玖胭 致咧 耳 通 过 以上 化 简运 算 , 共 节 省 了 次加 法 、 次减 法 、 次乘法 和 次 除法 的运算量 , 如 果 是 扩 展 到 成 干 上 万 个 像 素 的运算 , 这样 的简 化 就 可 以节 省很 多时 间 任 意一 点的体 视 都可 以按 以下 公 式计算 二 尤漏 一尤漏 对 于 虚拟 境 界 中的每 一 个 物体 而 言 , 我们 都 必 须 确 定 它 在 监 视器 上 相应 的显 示位 置 一 般情况 下 , 我们 可 以利用 上 面 给 出 的计算公 式 来确 定物 体 上 各 个 顶 点 的位 置 , 然 后 再 填 充 整 个 多边 形 在 编写 绘制软件执行 上 述运算 的过 程 中 , 就 能够 自动 地分 别 计 算 出左 摄 像机 和 右 摄像机 的投影 图像 量 为凡 二 一吞 乙十 右 眼 偏移 为 , 则在 的 平 面 上 的相 应 偏 移 量 为 ‘ 翰 吞 吞 所 以得 体视动画 的 自动生成算法 利用 动 画 软件 生 成 体视 图 比上 述 种算 法 方便 , 下 面 结合 计算 机动 画 软件 中
276 北京科技大学学报 2000年第3期 的摄像机设置,给出适合在动画软件(3DS 有了式(29)、(30)后,我们就可以编程来自动 MAX)中自动生成体视动画的算法. 设置摄像机的位置了,这样左右视点不需要人 图3所示的I,S,S,S2,S点的含义和值与体 工确定,并且当摄像机的滚动角不为0时,或者 视投影的常规算法中定义的一致.另外,S为视 不与某个垂直视图平行,也可自动调整.在此算 心,其坐标为(xyz),2个视点间的连线与水平 法中,我们只需从3 DStudio MAX产生的动画中 线的夹角为α,这也就是摄像机的滚动角.在此 取出我们所需要的摄像机的位置(xy2),然后 算法中要合成I点的体视图,就必须求得点S,S 根据2台摄像机之间的距离R值,就可以产生 的坐标:其中S,S是关于a的函数,S,S是关于a、 左右视点(x)和(xM2. 视点到图点的距离和I点到图点距离的函数. 但在通常情况下,R的值也比较难确定,要 视平面P的方程为: 不断的调整,并且每调整一次都要重新计算,再 Ax+By+Cz+D=0 (26) 从计算结果看是否有理想的体视效果,所以最 好的办法是先确定一个理想的视差PV,从图3 中可以看出SS°2点间的距离就为视差,这样根 据PV就可以计算出R的值,然后就可以产生左 xnyz》 右视点(Mz)和(yz),而不用边调边试.下面 就是其推导过程.因为: R=PVXIS /IS (31) 所以将式(31)代入式(29)和式(30),得: Ax+By+Cz+D=0 (A+B*+C=1) =x品2袋sma+ 图3点的体视投影 PyISxcosa A+B IS Fig.3 Stereoscopy projection of points APVxIS xsina+ (32) 过SS并与视平面P平行的平面方程为: y:B A(x-x,)+B(y-y,)+C(z-z)=0 (27) -BC PVxISixcosa P?是在此平面内过S点的水平线段,其中 VA+B IS PS1 =|OS=1. BPyJS.xcosa 设,A+B+0则: c-x,+y-y,}=1 xx xsina+ A(-x+By-y,)=0 ACPVxISixcosa 2-3,=0 √AP+BXS -B x-x√+B B x-x,=√+B 以袋a+ (33) A或 -A y-y√+B (28) y-y.=AB BC PVxIS V+B*S°xcQsa z-z,=0 2-z,=0 得出的(x,y,z)就是P,点的坐标,根据旋 BxPsJSxcosa IS9 转和平移算法就可得S,S的坐标,其值分别为: 这样按照公式(32)(33),就可以利用3DS -+如aC B:Rcosa MAX的编程语言MAXScript编制一个程序来控 制摄像机了. g+sa+器Aoa2)》 4结论 z=z,+√P+BiRcosa x=xBRsina Rcosa B 根据双眼视差原理,给出了虚拟现实中用 计算机中生成体视动画的3种算法,前2种算法 -%+4标Ria+ BC +B:Rcosa (30) 适用于简单的图形,例如对线框图等图形比较 有效,但要产生复杂模型的体视动画需经过很 z=z-VA2+B Rcosa
北 京 科 技 大 学 学 报 年 第 期 的 摄 像 机 设 置 , 给 出 适 合 在 动 画 软 件 中 自动 生 成 体视动 画 的算法 图 所 示 的 , ,从 ,义 , 义 点 的含 义 和 值 与体 视投影 的常规 算法 中定义 的一 致 另外 , 为视 心 , 其 坐 标为 兀必汤 , 个视 点 间的连线与水 平 线 的夹角为 , 这 也 就 是 摄 像机 的滚 动角 在 此 算法 中要 合 成 点的体视 图 , 就必 须求得 点, 的坐标 其 中 汉 是关于 的函数 , 邵 ,夕是 关 于 、 视 点到 图点 的距 离和 点到 图点距 离 的 函 数 视平 面 尸 的方程 为 月工 角叶〔 泛十 有 了式 、 后 , 我们 就 可 以编 程来 自动 设 置 摄像机 的位 置 了 这样左右 视 点不 需要 人 工 确 定 , 并且 当摄像机 的滚动 角 不 为 时 , 或 者 不 与某个垂直 视 图平行 , 也可 自动调整 在此算 法 中 , 我们 只 需从 产 生 的动 画 中 取 出我们所 需要 的摄像机 的位 置 凡必几 , 然后 根据 台摄像机之 间 的距 离 值 , 就 可 以产 生 左右 视 点仪少 几 和 扔角 但在 通 常情况下 , 的值 也 比较难确 定 , 要 不 断 的调 整 , 并且每调整 一 次都要 重 新计算 , 再 从 计 算 结 果 看 是 否 有理 想 的体视效 果 所 以最 好 的办法 是先确定一 个理 想 的视差 , 从 图 中可 以看 出邵 ,夕 点 间 的距 离就 为视差 , 这样根 据 就可 以计算 出 的值 , 然 后就可 以产生左 右 视 点 仍角 和仅少 声 , 而 不 用 边调边试 下 面 就 是其推导过程 因为 尸 周 所 以将式 代入 式 和 式 , 得 、 试饭豁 鄂 · 图 点的体视投影 褚 卿 坷 ︸飞石气 过及几 并与视平 面 平 行 的平 面 方程 为 一 伽一另 侧云一 二 尸 是在此平 面 内过 点 的水平 线段 , 其 中 川 州 设 ,矛 羊 则 潞 · 鄂一 。 另协品 掣 ‘ ‘二 潞 · 学 二。 。 一 衍耳万王 尸 尸 理火招 兀 一 十了石手 ” 下画厂 ” “ 犷 戈 一, 一 了药寻 , , 一 , 二 一 御 , 一几 得出的 , 少 , 就是 尸 , 点的坐标 根据旋 转和平移算法就可得 凡 , 凡 的坐标 , 其值分别 为 忐 · 罕 二。 。 斗书斋 · 鄂 ‘ “ ‘ 忐 · 罕 二。 。 一 二 一 否再歹 · 鄂一 一‘ 另 一” 十 二 一 扭 , 一 御 仪 一 ‘御 沂石乎 办 仪 凡 另 孟 ’ 一 忐 二忐 。 。 扁 · 忐 一 ,”, 了矛硒 三 这样 按 照 公 式 , 就 可 以利 用 的编 程 语言 编制 一 个程序来控 制摄像机 了 结论 根据双 眼 视差 原理 , 给 出 了虚拟 现 实 中用 计 算机 中生成体视动画 的 种算法 , 前 种算法 适用 于 简单 的图形 , 例 如 对线框 图等 图形 比较 有效 , 但要 产 生 复杂模 型 的体视动 画 需经 过 很
Vol.22 No.3 李畅等:虚拟现实中体视动画的生成算法 ·277· 多的工作,其步骤是首先产生双眼的视点,再编 京:科学出版社,1998 写动画程序进行动画等,工作量和难度相当于编 2汪成为,高文,王行仁.灵境(虚拟现实)技术的理论、实 写一个大型的3D动画软件程序(如同编写像3DS 现及应用北京:清华大学出版社,1996 3郑竺英.双眼立体视觉的信息加工.北京:科学出版社, MAX这种程度、水平的程序),这显然是不现实 1998 的.而体视动画的自动生成算法巧妙的利用了 4黄心渊,李畅.体视动态模拟中的图像生成与合成.计 3 DS MAX中的摄像机视点,先由3 DS MAX产生 算机仿真,1999,16(3):268 动画图形,这样建模、灯光、材质等效果可借助于5 Duckstein F.Extension of Validity Calculation to Moving 3 DS MAX,然后自动进行体视计算,再渲染、生成 Objects Within a Virtual Reality System Using Frame-to- 等,最后产生体视动画.我们现在已经采用了体 frame Coherence.The Joural of Visualization and Com- puter Animation,1998,9(4):259 视动画的自动生成算法,做出了一些相应的体视 6陈世红,李畅,王文清.3 Studio MAX R3培训教程.北 动画节目. 京:清华大学出版社,1999 参考文献 1齐东旭,马华东,黄心渊,等计算机动画原理与应用.北 Generating Algorithm of Stereoscopy Animation in Virtual Reality LI Chang,HUANG Xinyuan,DING Yuzhan 1)Resources Engineering School,UST Beijing,Beijing100083,China 2)CAD Center,North China University of Technology,Beijing 100041,China ABSTRACT Based on the principle that the eyes ofhuman beings can view the depth of filed.Three algorithms of generating stereoscopy animation in virtual reality system were brought up.It expatiates their deduction, conclusions and utilities as well as simple analyses and comparisons. KEY WORDS stereoscopy;animation;algorithm;virtual reality
李畅等 虚拟现 实中体视动 画 的生成算法 一 多 的工 作 , 其步 骤 是 首 先 产 生 双 眼 的视 点 , 再 编 写动 画 程序进行动 画 等 , 工 作量和 难度相 当于 编 写 一个大型 的 动 画 软 件程 序 如 同编写像 这种程度 、 水平 的程 序 , 这 显 然 是 不 现 实 的 而 体视动 画 的 自动 生 成 算法 巧 妙 的利用 了 中的摄像机视 点 , 先 由 产 生 动 画 图形 , 这样建模 、 灯光 、 材质 等效 果可借助于 , 然 后 自动进行体视计算 , 再渲 染 、 生成 等 , 最 后 产 生 体视动 画 我们 现 在 已经 采 用 了体 视动 画 的 自动 生成算法 , 做 出 了一 些相应 的体视 动 画 节 目 京 科学 出版社 , 汪 成 为 ,高文 ,王行仁 灵境 虚拟 现实 技术 的理 论 、 实 现及应用 北京 清华大 学 出版社 , 郑竺英 双眼立体视觉 的信息加工 北 京 科学 出版社 , 黄心渊 ,李畅 体视动态模拟 中的 图像生成与合成 计 算机仿真 , , 、 妞 丙 吮 一 血口 , 几 一, , 油 呱 , 陈世红 ,李畅 ,王 文清 培 训 教程 北 京 清华大学出版社 , 参 考 文 献 齐东旭 ,马华 东 ,黄心渊 , 等 计算机动 画 原理与应用 北 , 万 注 石 用 , 几 五“ 刀 , , 如 , 五 由 苗 ’ 】 , 沁 ,肠由 卫肚 讥 理加 即 , 找 试