Re: How to get a very large 2D projected surface image [message #51913 is a reply to message #51911] |
Mon, 11 December 2006 12:19   |
Rick Towler
Messages: 821 Registered: August 1998
|
Senior Member |
|
|
As you have found, (unfortunately) it's impossible to render an image of
that size directly using object graphics. It probably doesn't matter
anyways because unless you have 1.5GB of texture memory you are not
going to be able to display the whole surface with your texture at full
resolution.
While this thread has run amok, JD's post is actually the line of
thought you'll want to pursue. You are going to have to render this
surface in pieces and then stitch the images together. You will need to
read the docs regarding the TEXTURE_HIRES keyword and experiment to find
the "zoom" level required to display the portion of the surface at full
resolution. You will need to determine exactly what ITTVIS means when
they say "zoom". Is their LoD code tied to IDLgrWindow requiring you to
use IDLgrWindow's Zoom* methods? Or is it more general, determining the
visible portion of the surface by calculating surface/frustum
intersection? You will then need to write a program that "flies over"
your surface and generates the image tiles that you will reconstruct
using some 3rd party application. You'll also need to deal with issues
of perspective. This technique works best with panoramic style images.
If you have a lot of depth of field, it will be hard to stitch the
tiles together.
I don't think my camera object is what you would want to use for
controlling composition. Since model transformations would be so
simple, using IDLgrView and manipulating the surface model via it's
translate method would be easiest.
It may also be worth submitting a feature request to ITTVIS for
arbitrary IDLgrBuffer dimensions. I'm guessing that the limit is based
on a limit with one of the renderers. Just let it go and have the call
fail if there are RAM and or renderer limitations.
Good luck!
-Rick
Hongkai wrote:
> Hi, folks,
>
> My problem is about getting 2D projected surface image as large as
> 20000*20000 pixels.
> I have a surface data image (DEM) of 600*600 pixels, and a
> TEXTURE_MAP image of 20000*20000 images. The TEXTURE_MAP image is to be
> texture mapped onto the surface.
> I want to get a projected view of this surface and save the
> projected view as a 20000*20000 image.
>
> I used the IDLgrObjects:
>
> oSurface = OBJ_NEW('IDLgrSurface', DemImg, STYLE = 2, AMBIENT=[255,
> 255, 255] )
> oImage = OBJ_NEW('IDLgrImage', TextureImg, INTERLEAVE = 0,
> /INTERPOLATE)
> oSurface -> SETPROPERTY, TEXTURE_MAP = oImage, COLOR = [255, 255, 255]
> ;
> oModel = OBJ_NEW('IDLgrModel',LIGHTING=2 )
> oModel -> Add, oSurface
> oView = OBJ_NEW('IDLgrView',PROJECTION=2,COLOR=[138,209,255] )
> oView -> Add, oModel
>
> Then I tried the IDLgrWindow, IDLgrBuffer, IDLgrClipboard to get the
> projected image from oView, but their maximum dimension limit are
> 4096*4096, so I can't get a desired 20000*20000 image.
>
> How to deal with this? Thank you very much!
>
|
|
|