Given a space scene where there can be ships of various sizes, and more than one planet.
The ships can be at varying distances. Should I have three cameras?
One for the ships
One for any planet I might possibly approach.
One for distant planets (the planets will be some distance from each other, of course. I would think that you would draw all planets as distant, except the one you are closest to.)
Does this sound like the right approach?
If I have a scene (think an x3 system, or possibly eve) where the ships can be very small (star trek shuttlecraft size) to VERY large (think huge carrier, mile or two long), should I use 4 cameras? One for near ships, one for far, BIG ships, one for near planets..one for far planets....
One other questions...how to handle transitions. Will each object need to handle switching to be drawn by a different camera, based on distance from the player?
Or is that overkill? Anyone with experience with this type of situation have any suggestions?
(Edit: I noticed that Unity's scene view seems to be able to properly draw just about anythin, near or far. How is that?)
The system i'm using right now for this type of thng uses two spaces.
The first space, celestial, has planets, moons, stars etc and all objects are tiny comparison say ships in the editor. It has its own camera that has greater depth than anything else.
I have another layer, local, that contains ships, asteroids, and stations. This layer is like a normal scene for any shooter.
To make everything look right I have the celstial camera move and rotate with the local camer, it rotates the same but moves slower.
This all looks weird in the editor but in game it looks fine. For ships far away I used sprite to represent them.
Doing it this way I can fit an entire 'galaxy' into one scen and just load/unload what is needed locally on the fly.
It sounds weird but it works well. If that didn't make sense I can clear it up.
Oh, lights can be layer specific so you can avoid weirdness by flying by the stars light in world space. When in game it looks like the ship is nowhere near the star.
answered May 25 '10 at 02:38 AM
I don't think this will give you the results you think it will. The final composite image is going to have no depth consistency. The player wont know the difference between a near and a far ship.
Is this problem because ships & planets that are far away are not drawing at all? Or are drawing so small they can't be seen? Either way, when objects are too far away to be represented by geometry you can use a 2d icon/sprite instead.
You may be able to put this into the LOD of the model (not sure, havent done this in Unity but in other systems you can) - so when its really far away it switches to the sprite. Otherwise you will need to do the switch manually.
For example say you have your camera and a ship in your scene. The dashes are representing distance from the camera to the object.
In the last case, thats when you want to swap the 3d model of the ship with a small 2d sprite. That will give the user something to click on/view.
(Unity's scene viewer (if I remember correctly) has an incredibly long far clip plane, which you probably don't have setup for the game camera. If this is the case then objects that are past the clip plane will not be drawn at all. Its better for performance to have as short a far clip plane as possible.)
answered May 10 '10 at 10:28 PM
Last summer my team and I put together a game where the bulk of it took place in space.
My personal preference for building space scenes is to have a very deep far clipping plane and to actually take the planets and bake them into the sky box. If you're in space, you're most likely not going to be close enough to planets to be zooming by them as it just doesn't look realistic. Therefore baking stuff like that into the sky box is actually quite beneficial to performance and realism.
answered May 24 '10 at 11:55 PM