JSR184规范封装照相机的lookat方法
出处:tznhzj 发布于:2007-04-29 10:35:05
在JSR-184 API规范里,NodeTransform类指定了一系列方法。这些方法有利于在JSR-184实现look-at方法。然而,它被认为与JSR-184执行说明规范有所不同,有时甚至会忽略这一系列方法。
自己实现look-at方法其实并不复杂。下面的代码例子是Digital Chocolate公司如何处理照相机的封装设计。请注意Digital Chocolate公司在Mascot Capsule v3中使用整数来处理,而在设计更高层的游戏类设计中使用浮点数来处理。
/** * Wrapper method for setting look at camera. * * The method requires that look and up vectors normalized. */ public static final void setLookAt(float a_posX, float a_posY, float a_posZ, float a_lookX, float a_lookY, float a_lookZ, float a_upX, float a_upY, float a_upZ) { // JSR-184 version if (USE_M3G) { // Cross product to get side vector float sideX = (a_lookY * a_upZ) - (a_lookZ * a_upY); float sideY = (a_lookZ * a_upX) - (a_lookX * a_upZ); float sideZ = (a_lookX * a_upY) - (a_lookY * a_upX); float inv_len = 1.0f / (float) java.lang.Math.sqrt(sideX * sideX + sideY * sideY + sideZ * sideZ); sideX *= inv_len; sideY *= inv_len; sideZ *= inv_len; // make up vector perpendicular a_upX = (sideY * a_lookZ) - (sideZ * a_lookY); a_upY = (sideZ * a_lookX) - (sideX * a_lookZ); a_upZ = (sideX * a_lookY) - (sideY * a_lookX); // footnote: up is unit size because side and look are perpendicular sm_mtx[0] = sideX; sm_mtx[1] = a_upX; sm_mtx[2] = -a_lookX; sm_mtx[3] = a_posX; sm_mtx[4] = sideY; sm_mtx[5] = a_upY; sm_mtx[6] = -a_lookY; sm_mtx[7] = a_posY; sm_mtx[8] = sideZ; sm_mtx[9] = a_upZ; sm_mtx[10] = -a_lookZ; sm_mtx[11] = a_posZ; sm_mtx[12] = 0.0f; sm_mtx[13] = 0.0f; sm_mtx[14] = 0.0f; sm_mtx[15] = 1.0f; sm_m3gTransform.set(sm_mtx); } // Mascot version if (USE_MASCOT) { sm_mascotTmpVectorA.set((int)a_posX, (int)a_posY, (int)a_posZ); sm_mascotTmpVectorB.set((int)(a_lookX * MASCOT_ONE),(int)(a_lookY * MASCOT_ONE),(int)(a_lookZ * MASCOT_ONE)); sm_mascotTmpVectorC.set(0, DajmGraphics.MASCOT_ONE, 0); sm_mascotAffineTrans.lookAt(sm_mascotTmpVectorA, sm_mascotTmpVectorB,sm_mascotTmpVectorC); } } |
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 分布式光伏发电有什么优劣势2024/4/29 17:17:39
- 如何更好的理解lwip协议?2024/4/28 17:20:13
- 802.11ac连接的推荐设置_802.11AC无线网桥的配置和注意事项2024/4/28 17:10:43
- matlab是什么编程语言?2024/4/28 17:04:06
- VCC,VDD,VEE,VSS在电源原理图中有什么区别?2024/4/26 17:36:58