Re: How to get a very large 2D projected surface image [message #51875] |
Thu, 14 December 2006 08:56 |
Rick Towler
Messages: 821 Registered: August 1998
|
Senior Member |
|
|
Steven Houston wrote:
> Rick Towler wrote:
>
>> 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?
>
> It's the latter. If you want your texture to always be rendered at the
> full resolution set TEXTURE_HIGHRES=2, this disables the LoD calculation.
Good to know. The OP will most likely need to use the LoD tiling since
he/she probably doesn't have 1.5GB of texture memory to store the entire
20k x 20k texture.
-Rick
|
|
|
Re: How to get a very large 2D projected surface image [message #51885 is a reply to message #51875] |
Thu, 14 December 2006 01:29  |
Steven Houston
Messages: 5 Registered: November 2005
|
Junior Member |
|
|
Rick Towler wrote:
> 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?
It's the latter. If you want your texture to always be rendered at the
full resolution set TEXTURE_HIGHRES=2, this disables the LoD calculation.
Steve.
|
|
|
Re: How to get a very large 2D projected surface image [message #51910 is a reply to message #51885] |
Mon, 11 December 2006 12:53  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
JD Smith writes:
> Sadly the
> fancy SDRAM they use in the Mac Pro is somewhat costlier than normal
> RAM, but still, for 16GB you can save roughly $2.5K by going 3rd
> party.
Oh, well. The youngest's college fund didn't have even
that kind of money in it anyway. Guess I'll buy lottery
tickets with what was there. :-(
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
Re: How to get a very large 2D projected surface image [message #51911 is a reply to message #51910] |
Mon, 11 December 2006 12:26  |
JD Smith
Messages: 850 Registered: December 1999
|
Senior Member |
|
|
On Mon, 11 Dec 2006 11:44:27 -0700, David Fanning wrote:
> JD Smith writes:
>
>> But it's "easy" to stitch up a couple hundred of these ;).
>
> I'm shopping for a new computer right now. Anyone know where I can get a
> cheap Mac with 16 GByte of RAM?
Never buy your memory from Apple... they add a big mark-up. Sadly the
fancy SDRAM they use in the Mac Pro is somewhat costlier than normal
RAM, but still, for 16GB you can save roughly $2.5K by going 3rd
party.
Before you warm up the credit card, though, keep in mind that IDL
still has not been shipped as a 64bit version for OSX, which would
allow you to *use* that 16GB. Given that Apple has been at 64bits for
more than 3 years with the introduction of the G5, it's not clear what
the hold-up is. There have been various claims that OSX doesn't
"fully support 64bit apps", but this isn't entirely the case. It's
true, the GUI layers won't be 64-bit compatible until Leopard next
Spring, but IDL doesn't use Aqua or any other OSX goodness. IDL could
have been moved over to 64bit more than 2 years ago, compiling against
a 64bit X11 library like Xorg's. Hopefully the next version.
JD
|
|
|
Re: How to get a very large 2D projected surface image [message #51912 is a reply to message #51911] |
Mon, 11 December 2006 12:30  |
Rick Towler
Messages: 821 Registered: August 1998
|
Senior Member |
|
|
Rick Towler wrote:
> 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?
To make this clear, I mean surface / *view* frustum intersection. That
is, the portion of the surface that is bounded by the viewing frustum
defined by the VIEWPLANE_RECT, EYE, and ZCLIP parameters of IDLgrView.
-r
|
|
|
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!
>
|
|
|
Re: How to get a very large 2D projected surface image [message #51914 is a reply to message #51913] |
Mon, 11 December 2006 11:46  |
Michael Galloy
Messages: 1114 Registered: April 2006
|
Senior Member |
|
|
Braedley wrote:
> Uh, you can't? The only computer that Apple makes that supports 16gigs
> of ram is the MacPro, and that starts at $2500 (USD) with only 1gig of
> ram.
Configured with the defaults plus 16 GB of memory, it's "only" $8,198.
I'm not sure if that qualifies as "cheap" for you.
The old PowerMac G5 can address 16 GB also and you can probably get a
deal on them now that Apple has the full Intel lineup.
Mike
--
www.michaelgalloy.com
|
|
|
Re: How to get a very large 2D projected surface image [message #51915 is a reply to message #51914] |
Mon, 11 December 2006 11:28  |
Braedley
Messages: 57 Registered: September 2006
|
Member |
|
|
Uh, you can't? The only computer that Apple makes that supports 16gigs
of ram is the MacPro, and that starts at $2500 (USD) with only 1gig of
ram.
Braedley
David Fanning wrote:
> JD Smith writes:
>
>> But it's "easy" to stitch up a couple hundred of these ;).
>
> I'm shopping for a new computer right now. Anyone know
> where I can get a cheap Mac with 16 GByte of RAM?
>
> Cheers,
>
> David
>
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming: http://www.dfanning.com/
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
|
|
|
|
|
Re: How to get a very large 2D projected surface image [message #51925 is a reply to message #51920] |
Sat, 09 December 2006 08:59  |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Hongkai writes:
> I once tried to divide the image into several sub-areas and get the
> projected image of each area, then I merge all the projected images to
> get a global projected image, which is very large.
> Unfortunately, this method is unreasonable because each projected
> image has its unique EYE_POSITION. When IDLgrView is creating the
> projected view of the surface, the eye is always positioned directly in
> front of the center of the viewplane rectangle. Thus the eye position
> of each sub-area is in front of the its own area center, and the global
> projected image does not have an universal eye position.
Well, I don't have any good ideas about this, other than
to look around Rick Towler's web page for something that
might help. But have you given any thought to what you
are going to DO with this 20K by 20K surface once you
have created it? That seems to me to be just as problematic
as creating it in the first place.
> I really want to punt.
I can believe it! :-)
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
Re: How to get a very large 2D projected surface image [message #51926 is a reply to message #51925] |
Sat, 09 December 2006 08:05  |
Hongkai
Messages: 6 Registered: September 2006
|
Junior Member |
|
|
; - ) laf... Thank you!
I once tried to divide the image into several sub-areas and get the
projected image of each area, then I merge all the projected images to
get a global projected image, which is very large.
Unfortunately, this method is unreasonable because each projected
image has its unique EYE_POSITION. When IDLgrView is creating the
projected view of the surface, the eye is always positioned directly in
front of the center of the viewplane rectangle. Thus the eye position
of each sub-area is in front of the its own area center, and the global
projected image does not have an universal eye position.
...I really want to punt.
"David Fanning 写道:
"
> Hongkai writes:
>
>> My problem is about getting 2D projected surface image as large as
>> 20000*20000 pixels.
>> How to deal with this? Thank you very much!
>
> I think you might have to punt in this situation. :-)
>
> Cheers,
>
> David
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming: http://www.dfanning.com/
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|
|