Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def readDepthMap(x, y):
- view = omUI.M3dView.active3dView()
- width = view.portWidth()
- height = view.portHeight()
- width = 1
- height = 1
- numPixels = width*height*4
- depth = [0.0]*numPixels
- util = om.MScriptUtil()
- util.createFromList(depth, numPixels)
- utilPtr = util.asUcharPtr()
- view.readDepthMap(x, y, width, height, utilPtr, omUI.M3dView.kDepth_Float)
- b1 = om.MScriptUtil.getUcharArrayItem(utilPtr, 0)
- b2 = om.MScriptUtil.getUcharArrayItem(utilPtr, 1)
- b3 = om.MScriptUtil.getUcharArrayItem(utilPtr, 2)
- b4 = om.MScriptUtil.getUcharArrayItem(utilPtr, 3)
- data = [b1,b2,b3,b4]
- b = struct.pack('4B', *data)
- floatDepth = struct.unpack('<f', b)[0]
- print "depth: ",floatDepth
- return floatDepth
- def projectPointToViewZDepth(p):
- # take a world space point, bring it into screen-space, look up its camera depth
- # then project it back into world-space using that depth
- scriptUtil = om.MScriptUtil()
- ptr = scriptUtil.asShortPtr()
- scriptUtil2 = om.MScriptUtil()
- ptr2 = scriptUtil2.asShortPtr()
- view = omUI.M3dView.active3dView()
- stat = view.worldToView(p, ptr, ptr2)
- x = scriptUtil.getShort(ptr)
- y = scriptUtil.getShort(ptr2)
- depth = readDepthMap(x,y)
- ray = om.MVector()
- wp = om.MPoint()
- view.viewToWorld(x,y,wp, ray)
- pProjected = wp + ray * depth
- return pProjected
Advertisement
Add Comment
Please, Sign In to add comment