Optimizing scenes w big 3d Models for framerate

John Daniel's icon

Hello all! this is more of a "best practices" and "looking for tips n' tricks" kinda question.

background -
I have a first-person-style camera moving around a very large 3d model landscape using anim.drive and the usual AWSD key commands to drive it.

The landscape is a large .dae file I have created in Blender, with lots of poly optimization before bringing it to Max.
Since the user only needs to see the 5-10% of the model they are currently "in" - I have set the camera's fog and clip params to show only the area around the cam that the user needs to see.

I started testing with a little version of the .dae file (10 mb = 70 + fps) and have been working up the complexity till I saw some frame-rate slowdowns starting around 70 megs or so. Poly count seeeems to be the main cause. Final model ended up being around 130mb and am totally happy with the frame-rate i am getting. (14-17 fps)

My big-big assumption (wrong) was that changing the far_clip/near_clip or fog params would help the frame-rate, under the assumption that the polys outside those ranges would "not be bothered with/culled/not rendered/etc." - since they are outside the range of visibility.
A great theory quashed by an ugly fact : )

So ALL of that is to ask -
What tips n tricks/thoughts do you guys have on handling large poly scenes in Max more efficiently?

thanks much for your time/info
cheers!
jd

John Daniel's icon

Also, for those looking into this kinda thing, this is verrry helpful page to bookmark

Greg Finger's icon

Split it into smaller pieces and only turn on their automatic rendering parameter when they're in view range. Also turn off the normalize attribute and they should piece together perfectly. attach your anim.drive to a gl.camera and poll it with the message "getposition" and out of the camera's right outlet will be the camera's position, which you can use to determine which pieces need to be rendered and which don't.

John Daniel's icon

Supah Fab!!! good idea!

that makes total sense and I can see it helping lottss with slower machines.

Now I understand how something like Asphalt 8 can run on a friggin Ipad... smart-sneaky programming : )

AND - I had never spotted/grokked the importance of the normalize message on the object - explains a lot of really weird stuff i was blaming on my iffy Blender skills : 0

mega-thanks!!!
jd