Guest User

Untitled

a guest
Apr 11th, 2017
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.46 KB | None | 0 0
  1.  
  2. def readDepthMap(x, y):
  3.     view = omUI.M3dView.active3dView()
  4.     width = view.portWidth()
  5.     height = view.portHeight()
  6.  
  7.     width = 1
  8.     height = 1
  9.    
  10.     numPixels = width*height*4
  11.     depth = [0.0]*numPixels
  12.     util = om.MScriptUtil()
  13.     util.createFromList(depth, numPixels)
  14.     utilPtr = util.asUcharPtr()
  15.  
  16.     view.readDepthMap(x, y, width, height, utilPtr, omUI.M3dView.kDepth_Float)
  17.  
  18.     b1 = om.MScriptUtil.getUcharArrayItem(utilPtr, 0)
  19.     b2 = om.MScriptUtil.getUcharArrayItem(utilPtr, 1)
  20.     b3 = om.MScriptUtil.getUcharArrayItem(utilPtr, 2)
  21.     b4 = om.MScriptUtil.getUcharArrayItem(utilPtr, 3)
  22.  
  23.     data = [b1,b2,b3,b4]
  24.     b = struct.pack('4B', *data)
  25.     floatDepth = struct.unpack('<f', b)[0]
  26.     print "depth: ",floatDepth
  27.     return floatDepth
  28.    
  29.  
  30. def projectPointToViewZDepth(p):
  31.     # take a world space point, bring it into screen-space, look up its camera depth    
  32.     # then project it back into world-space using that depth
  33.    
  34.     scriptUtil = om.MScriptUtil()
  35.     ptr = scriptUtil.asShortPtr()
  36.    
  37.     scriptUtil2 = om.MScriptUtil()
  38.     ptr2 = scriptUtil2.asShortPtr()
  39.    
  40.     view = omUI.M3dView.active3dView()
  41.     stat = view.worldToView(p, ptr, ptr2)
  42.    
  43.     x = scriptUtil.getShort(ptr)
  44.     y = scriptUtil.getShort(ptr2)
  45.    
  46.     depth = readDepthMap(x,y)
  47.     ray = om.MVector()
  48.     wp = om.MPoint()
  49.    
  50.     view.viewToWorld(x,y,wp, ray)
  51.  
  52.     pProjected = wp + ray * depth
  53.     return pProjected
Advertisement
Add Comment
Please, Sign In to add comment