PDA

View Full Version : image size limit in XSI?


MJV
11-30-2004, 10:22 AM
What is the upper size limit for images used in textures in XSI? When I try large textures, such as 6000x3000, XSI basically just freezes and sometimes takes my computer with it.

---------
Dell Xeon dual 3.2. 2.5gigs RAM, atiFireGl3100, WinXPpro

AdrianLazar
11-30-2004, 11:39 AM
i had the same problem,
select in render options -> optimization -> automatic map conversion - ON FOR THIS PASS and should work fine... also here you can set the memory limit to unlimited to avoid some problems...

Martin_G_3D
11-30-2004, 11:41 AM
Don't think there is a limit, highest ive worked with was 10800 x 5400 and thats on a crappy Amd 850 with 256mb sd ram

of course when you have many of those your system will evantually suffer as image clips are stored in memory

but with your specs you shouldn't be having that much trouble

ThE_JacO
11-30-2004, 11:55 AM
there is no limit, but textures require the memory space they are allocated into to be contiguous.
even if you have a free gig of ram a 300MB texture will make your systems kneel most of the times, on account of the ram being too fragmented to allocate that space contiguously.

using pyramidal map files for textures helps, but they come at a price, they eat storage space like cake.
another (unacceptable in my opinion) solution is rendering from the shell after a clean reboot and/or using a ram cleaner, then maybe your system will manage to allocate and render properly.
last but not least you can always split your textures in 2 and mix them seamlessly in the rendertree.

MJV
11-30-2004, 01:58 PM
i had the same problem,
select in render options -> optimization -> automatic map conversion - ON FOR THIS PASS and should work fine... also here you can set the memory limit to unlimited to avoid some problems...
Thanks. That helped. At least it renders now. I'm using a 6000x3000 hdr image as an environment, and XSI will have nothing of it without your fix. I noticed that setting the auto map conversion to on created a new file on my drive called filename.hdr.map. Does XSI use this file instead of the original, and does this file retain the hdr info?

Another question. How can I see my environment image in the editor without doing a region preview? Thanks.

Razorb
11-30-2004, 04:27 PM
yes XSI converted the HDR file to a MAP file it retains all of the HDRI information, and this is what its pulling the image data out of, its the same as using a program like hdrtoxsi with the exception that XSI is doing it inside the program, a little more overhead on the app unfortunatly, but a definate workaround for HDRI images.

Ablefish
11-30-2004, 07:20 PM
One other thing to consider depending on your project - unless you're looking for very very precise reflections from your environment map, you may not need it that big. If you're using it just for lighting, then the range of color is important, not the resolution of the map. Blurring it and shrinking it would speed things up a lot and reduce FG flicker if you're going that route.

MJV
12-01-2004, 06:27 AM
Thanks guys. Is there a way to see the image in the viewport, with real-time updating, without the region preview active?

Ablefish, I'm using the image as background, reflections, and for lighting, so I need the hi-res one. I was hoping to be able to use the same image for all three, and somehow apply a blur to it for only the lighting. I was trying to achieve a result similar to this one rendered in Cinema:

http://www.mvpny.com/FordA30Comp2AE.jpg

In Cinema the image has blur applied to a material applied to a sky that is only seen by GI, while a second sky has a separate material using the same image without blur seen by the camera and by reflections. Cinema has no trouble with this 6000x3000 image and can display it in the viewport at high res, while XSI doesn't even want me to load it into the preview. Not to be going on and on about Cinema, but I'm just trying to get near to the same functionality and responsiveness that I am used to working with.

Ablefish
12-01-2004, 11:54 AM
You could always apply the texture to an inverted sphere around the scene if you don't want to use the Environment shader. Although, i think you can stack environment shaders so you could have 1 for reflections and one for final gathering. There was also a recent thread on XSIBase where a Raytype node was used to combine two different maps into the Environment port on a material. (Look up The Fatman in the WIP thread...)

Is the Map working though? And I wonder if you still couldn't get a similar result with a smaller resolution image.

MJV
12-02-2004, 03:51 PM
You could always apply the texture to an inverted sphere around the scene if you don't want to use the Environment shader. Although, i think you can stack environment shaders so you could have 1 for reflections and one for final gathering.
Yes, it seems you can. Thanks.

Is the Map working though? And I wonder if you still couldn't get a similar result with a smaller resolution image.
It worked with the workaround, but it still won't display in the properties window. In this case I wouldn't want to use a smaller image -- I would if I had to -- but that's the point of evaluating it, to find out what it can and can't do.

4SweetB
12-10-2004, 02:59 PM
even if you have a free gig of ram a 300MB texture will make your systems kneel most of the times, on account of the ram being too fragmented to allocate that space contiguously. ... another (unacceptable in my opinion) solution is rendering from the shell after a clean reboot and/or using a ram cleaner, then maybe your system will manage to allocate and render properly.

Just thought I should mention something as a programmer to clear up possible confusion regarding memory being fragmented. I'm going to get geeky here so bear with me.. :)

In most modern OSes (Windows, Linux, etc.,) each program has a totally separate set of page tables. These tables are used to "map" physical memory into "linear" memory that the app can see. Physical pages of memory do not need to be physically contiguous in order for them to "look" contiguous to the application, thanks to the MMU (memory management unit) of the processor transparently using these tables to "collect everything together" when the application accesses memory.

Every time you start a program, that program is getting a *fresh* memory map that is not fragmented at all, despite how utterly fragmented the physical memory almost always is in this type of OS.

The only way XSI's memory map is going to get fragmented is if XSI fragments its memory map itself during the course of its running. (Therefore, restarting XSI might help, but restarting the system should not help.)

One thing that can fragment a program's memory map without it necessarily knowing is DLLs. Each one has to load somewhere in the memory map, and if there are a lot of DLLs and they decide to load all over the place, this could prevent XSI from obtaining a large enough contiguous block.

Most of the DLLs, the XSI programmers would hopefully have known about and put into one place before the release. However, sometimes your system can cause DLLs to get loaded that the program doesn't know about. For instance, if you have AOL instant messenger, I've noticed it puts a DLL into every process (I have no idea why). Also, device drivers, shell extensions, and other such things can slip in their own DLLs, and these could fragment XSI's memory.

If it's a serious problem, and nothing else helps, you might want to look into removing shell extensions and things like that you don't need. Also, there is a way of taking all a program's DLLs and making them use specific areas of the memory map instead of being all over the place. Look up "DLL rebasing" in any sufficiently geeky place.

Hope this clears things up a bit.

Cheers,
Kevin

CGTalk Moderation
01-20-2006, 01:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.