以3DS最大分辨率获得16位分辨率的Z-Buffer



我从图像中读取了Z-Buffer:

--get z buffer    in HD resolution     
rbmpHD = render outputsize:[1920,1080] channels:#(#zdepth) vfb:off camera: z_cam
z_dHD = getchannelasmask rbmp #zdepth outputfile:z_name 
z_dHD.fileName = z_nameHD
save z_dHD
close z_dHD 

我使用

pngio.setType #gray16

将IMAEs写出16位,但是,它们没有使用下降的8位,这意味着深度图像的分辨率仅限于256个步骤。因此,Z缓冲区从一开始就从0到255。是否可以从一开始就可以读出16位分辨率的Z-Buffer图像?

编辑:

代码必须产生任何类型的输出图像,这些图像可以回到C 程序中。为此,我需要16位的分辨率

功能

getChannel rbmpHD [x,y] #zDepth

返回Z深度值,但是 - 这意味着人们必须在相机的整个可见空间中循环 - 如何将可见的表面置于相机?即使有可能,这也会减慢很多过程

来自在线帮助:getChannelasmask-构建并返回单独的8位灰度位图

您可以渲染EXR格式并从那里工作吗?

这可以使用渲染元素而不是z-buffer通道来解决:

-- Create and apply Z Depth render element
z = Z_Depth()
m = MaxOps.GetCurRenderElementMgr()
m.RemoveAllRenderElements()
m.AddRenderElement z
tempFilename = @"D:deleteme.png" -- will not be written to disk
zFilename = @"D:TempTest_ZDepth.png"
zWidth = 1024
zHeight = 1024
rendElems = #()
rbmpHD = render outputwidth:zWidth outputheight:zHeight 
    renderElements:true renderelementbitmaps:&rendElems 
    outputfile:tempFilename vfb:false
pngio.setType #gray16
rendElems[1].filename = zFilename
save rendElems[1]

相关内容

  • 没有找到相关文章

最新更新