您的位置:首页 > 其它

对实拍和三维结合在maya里处理的一点想法

2017-07-12 20:37 183 查看
  感觉时间过得飞快,转眼半年已经过去了,已经是下半年的第一个月了,也确实该写点东西了;最近自己报名了一个英语班在学习英语,所以再技术方面没有以前那么投入了,今天就基于最近公司的项目写一个小一点的东西,基本属于抛砖引玉。

  最近公司在做一部实拍和三维结合的电影,这就需要将实拍素材导入到maya里,然后将三维的模型和实拍的素材结合起来,来拍屏或者修改动画看最终的三维和实拍结合的效果。这里就有个小知识点,就是如何将实拍的素材和追踪反求出来的相机在maya完美的贴合,不会出现某一帧错位的问题。在maya里导入视频或者序列帧首推imagePlane,这个工具比创建一个多边形polygon,再赋个材质要好很多,而且也简单方便。

  

  Image Plane在这:

  


  

  在maya里创建预览的工具有了,现在就需要考虑另一个问题,就是如何将这个imagePlane完美地和相机契合,不论相机怎么动或者imagePlane如何动都不会在相机的视图里有任何的偏移,也是本文分享的第一个知识点。这里就需要对视锥(Frustum)有个了解,当我们在maya显示出来视锥就能看到,一个类似于聚光灯一样的东西,我们调节相机的焦距时,可以看到视锥也在发生宽窄的变化,也就是当我们的imagePlane在移动时,它的宽高都要和相机的视锥完全一致,这样才不会出现偏移的问题。

  视锥如图:

  


  

  获取相机视锥的宽高可以通过下面的方法:

  Maya的command是干不了这种事了,用API了,

import maya.api.OpenMaya as om

def getMObject(name):
msel = om.MSelectionList()
msel.add(str(name))
return msel.getDependNode(0)

def calcuteFrustumSize(camera, depth):
mobj = getMObject(camera)

mfncam = om.MFnCamera(mobj)
width, height = mfncam.getFilmFrustum(depth)[:2]
return width, height, depth

if __name__ == '__main__':
calcuteFrustumSize('cameraShape1', 20)


未完待续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息