Celestia in planetarium domes?
Celestia in planetarium domes?
Another attempt to start a discussion here...
Anyone got Celestia working as a projection on the inside of planetarium domes? If so, how? Does the FOV go high enough for this to work well?
Anyone got Celestia working as a projection on the inside of planetarium domes? If so, how? Does the FOV go high enough for this to work well?
My Celestia page: Spica system, planetary magnitudes script, updated demo.cel, Quad system
Malenfant
You may know more than I do in this area. There are a few discussions in this forum before like
http://www.shatters.net/forum/viewtopic.php?t=8417&highlight=dome
I think there are people out there trying to make Celestia work within a dome or a similar 3D projecting system. I have a system installed in my lab. two years ago which is powered by SGI Irix6.50. It has been my personal project to incorporate Celestia and make it run under SGI Irix6.50. So far code migration task is huge and I am nowhere yet. I guess if Celestia can run on SGI system, the rest tasks could be easy ones, most could be taken over by the hardware/projecting system.
You may know more than I do in this area. There are a few discussions in this forum before like
http://www.shatters.net/forum/viewtopic.php?t=8417&highlight=dome
I think there are people out there trying to make Celestia work within a dome or a similar 3D projecting system. I have a system installed in my lab. two years ago which is powered by SGI Irix6.50. It has been my personal project to incorporate Celestia and make it run under SGI Irix6.50. So far code migration task is huge and I am nowhere yet. I guess if Celestia can run on SGI system, the rest tasks could be easy ones, most could be taken over by the hardware/projecting system.
Joe
In a dome
During summer, I was in a mobile dome that had space exploration as its main theme.
Applying Celsetia to this is a snap. The entire dome was a portible
canvas that was maintained by a blower that kept it in shape.
In side a Apple mac was running a video program that had dimentions added so when the projector beamed the image toward a mirror, it would display a beatiful full dome show.
the cost is a little high, but the concept is very easy to grasp.
i ask the guy when I was there how much it was , and it was in excess of 10 k for everything. Computer, software, projector and the blow up dome.
I studied the structure so I could make one to have in my home, its very easy to build if you use other methods rather than buying one.
The image was transformed in to a circle shaped video, making it a little hard to view just using your pc.
A simple mirror, bent into shape( just like a motocycle front screen ) would be used to reflect the image on to the domes walls.
The dome is just a white back drop.
Applying Celestia video or even real time interaction to this would be a possible.
Its a great idea and if I get it up, along with my underwater footage, ill post you a total schematic of it.
Applying Celsetia to this is a snap. The entire dome was a portible
canvas that was maintained by a blower that kept it in shape.
In side a Apple mac was running a video program that had dimentions added so when the projector beamed the image toward a mirror, it would display a beatiful full dome show.
the cost is a little high, but the concept is very easy to grasp.
i ask the guy when I was there how much it was , and it was in excess of 10 k for everything. Computer, software, projector and the blow up dome.
I studied the structure so I could make one to have in my home, its very easy to build if you use other methods rather than buying one.
The image was transformed in to a circle shaped video, making it a little hard to view just using your pc.
A simple mirror, bent into shape( just like a motocycle front screen ) would be used to reflect the image on to the domes walls.
The dome is just a white back drop.
Applying Celestia video or even real time interaction to this would be a possible.
Its a great idea and if I get it up, along with my underwater footage, ill post you a total schematic of it.
Malenfant
A year or so ago, two different people emailed me to advise that my educational activity scripts were being used to run an actual planetarium show. One person was in Columbia. The other was in Spain, if I recall.
I have no other details, but it strongly suggests that Celestia can be projected onto a dome and everything you can see on your monitor can be seen overhead, provided your projector is bright enough.
FYI
Frank
A year or so ago, two different people emailed me to advise that my educational activity scripts were being used to run an actual planetarium show. One person was in Columbia. The other was in Spain, if I recall.
I have no other details, but it strongly suggests that Celestia can be projected onto a dome and everything you can see on your monitor can be seen overhead, provided your projector is bright enough.
FYI
Frank
-
- Posts: 19
- Joined: 01.02.2007
- With us: 17 years 9 months
- Location: Birmingham, UK
Celestia in inflatable domes
i can confirm Celestia can and is used in inflatable planetaria. The MirriorDome system uses Celestia and Stellarium on a Mac and a spherical mirror.
We at Thinktank Planetarium, Techniquest and Inspire, Norwich are in the process of purchasing domes. I am writing all the astronomical scripts and shows for all three Science centres, so I'll keep you posted as to how we get on.
Colin
We at Thinktank Planetarium, Techniquest and Inspire, Norwich are in the process of purchasing domes. I am writing all the astronomical scripts and shows for all three Science centres, so I'll keep you posted as to how we get on.
Colin
Colin Hutcheson
Planetarium Presenter
_____________________
Thinktank Trust
Thinktank Trading Limited
Millennium Point Curzon Street
Birmingham
B4 7XG
Registered charity no. 1061898
Planetarium Presenter
_____________________
Thinktank Trust
Thinktank Trading Limited
Millennium Point Curzon Street
Birmingham
B4 7XG
Registered charity no. 1061898
-
- Developer
- Posts: 3776
- Joined: 04.02.2005
- With us: 19 years 9 months
Re: Celestia in inflatable domes
Colin_hutcheson wrote:...I am writing all the astronomical scripts and shows for all three Science centres...
Are those scipts only for dome use or can they be used on flat screen?
panetariums
You can try small_planetarium@yahoogroups.com <small_planetarium@yahoogroups.com>
I've built a couple myself - a 3/4, 16' diam hemisphere, out of 2" styrofome. And a 12' diam in the basement, made out of lathes glued together, and white cardboard hot glued to the inside. I use a curved security mirror, and it works great. I just need to upgrade to a higher resolution digital projetor, to get rid of the screen door effect
Regards
Terry
I've built a couple myself - a 3/4, 16' diam hemisphere, out of 2" styrofome. And a 12' diam in the basement, made out of lathes glued together, and white cardboard hot glued to the inside. I use a curved security mirror, and it works great. I just need to upgrade to a higher resolution digital projetor, to get rid of the screen door effect
Regards
Terry
I would like to second the original question of this thread.
I also offer to maintain a FAQ on Celestia in domes, since running Celestia in a dome is exactly what we're planning to do withing a few months!
We've got a small 5 meter dome from GOTO, and I'm considering basing and installation on the following:
- dual-dual-core pc with 4Gb RAM and fast disk and high-end graphics with lots of memory
- celestia
- stellarium
- most likely another, commercial software solution too
- a mid to high-end projector from Projection Design with fishey
- 5.1 audio with a fairly advanced sub
Should one go for a mirror based solution or just a plain fishey solution?
How do I convince Celestia to do spherical projection (very easy in Stellarium)?
Does Celestia support 180 degree projection or this there a weird limit at 120 degrees?
I also offer to maintain a FAQ on Celestia in domes, since running Celestia in a dome is exactly what we're planning to do withing a few months!
We've got a small 5 meter dome from GOTO, and I'm considering basing and installation on the following:
- dual-dual-core pc with 4Gb RAM and fast disk and high-end graphics with lots of memory
- celestia
- stellarium
- most likely another, commercial software solution too
- a mid to high-end projector from Projection Design with fishey
- 5.1 audio with a fairly advanced sub
Should one go for a mirror based solution or just a plain fishey solution?
How do I convince Celestia to do spherical projection (very easy in Stellarium)?
Does Celestia support 180 degree projection or this there a weird limit at 120 degrees?
Kenneth Bodin
VRlab/HPC2N, Umeå University
SWEDEN
VRlab/HPC2N, Umeå University
SWEDEN
Hello, my name is Ramon Vargas and I'm running a planetarium in a science museum in the city of Xalapa, Veracruz.
We had 6 months by now that we are using the linux version of stellarium with a spherical mirror projection. We got an AMD 64 computer with 1 Gb of Ram, a GeForce 6200 with 256 MB video card and things run smoothly. We project in a 6.5 meters dome using a video projector with 1024 x 768 pixels and a 0.25 meters half dome acrylic spheric mirror. The mirror is a second surface mirror. We are going to change in a few weeks more to a 1400 x 1050 videoproyector and a fisrt surface 0.60 meters spheric mirror.
We had been make use of celestia with system a couple of times. If we mantain the planets of spacecrafts near the horizon of the dome, things look undistorted, but when we aproach to the zenith of the dome, thinks look very distorted. Celestia doesn't have a fisheye or a spherical distortion , characteristics that would make this program very useful for using in a planetarium dome. We know that Swinburne university sells a modified version of celestia that indeed has a fisheye and a spherical distortion feature, but this version is for mac.
We don??t know much about programing in C++, open GL and about the code of Celestia, but we are willing to learn, so we can make the necesary modifications to the code so we can use this wonderfull software inside our domes. But of course we are going to need the help and directions of the celestia comunity in order to achieve this goal as soon as possible.
By the way, we are using stellarium under suse linux 10.2 and so far, celestia under windows, but we are planning to migrate to linux for celestia also. If Vincent read this post, what happen with your celestia version that include the sound option? we are using your last one, your edu tools is great but lack of the sound feature, and inside the planetarium, altough is posibble to run with an external sound source, is more easy to control and for make the presentation, that the sound feature lies inside the program.
As a final coment, we are aslo using mplayer, a video player for linux, with a small program develop by Johannes Gajdosik, a stellarium developer, to run fisheye movies using the spherical distortion feature. For the moment, we are using demos from the internet to make projection test. Despite the low resolution of this demos, they look pretty well.
We had 6 months by now that we are using the linux version of stellarium with a spherical mirror projection. We got an AMD 64 computer with 1 Gb of Ram, a GeForce 6200 with 256 MB video card and things run smoothly. We project in a 6.5 meters dome using a video projector with 1024 x 768 pixels and a 0.25 meters half dome acrylic spheric mirror. The mirror is a second surface mirror. We are going to change in a few weeks more to a 1400 x 1050 videoproyector and a fisrt surface 0.60 meters spheric mirror.
We had been make use of celestia with system a couple of times. If we mantain the planets of spacecrafts near the horizon of the dome, things look undistorted, but when we aproach to the zenith of the dome, thinks look very distorted. Celestia doesn't have a fisheye or a spherical distortion , characteristics that would make this program very useful for using in a planetarium dome. We know that Swinburne university sells a modified version of celestia that indeed has a fisheye and a spherical distortion feature, but this version is for mac.
We don??t know much about programing in C++, open GL and about the code of Celestia, but we are willing to learn, so we can make the necesary modifications to the code so we can use this wonderfull software inside our domes. But of course we are going to need the help and directions of the celestia comunity in order to achieve this goal as soon as possible.
By the way, we are using stellarium under suse linux 10.2 and so far, celestia under windows, but we are planning to migrate to linux for celestia also. If Vincent read this post, what happen with your celestia version that include the sound option? we are using your last one, your edu tools is great but lack of the sound feature, and inside the planetarium, altough is posibble to run with an external sound source, is more easy to control and for make the presentation, that the sound feature lies inside the program.
As a final coment, we are aslo using mplayer, a video player for linux, with a small program develop by Johannes Gajdosik, a stellarium developer, to run fisheye movies using the spherical distortion feature. For the moment, we are using demos from the internet to make projection test. Despite the low resolution of this demos, they look pretty well.
-
- Developer
- Posts: 1356
- Joined: 07.01.2005
- With us: 19 years 10 months
- Location: Nancy, France
Ramon wrote:If Vincent read this post, what happen with your celestia version that include the sound option? we are using your last one, your edu tools is great but lack of the sound feature, and inside the planetarium, altough is posibble to run with an external sound source, is more easy to control and for make the presentation, that the sound feature lies inside the program.
Hi Ramon,
The latest beta version of the Lua Edu Tools seems to be working perfectly. So this version will probably correspond to v1.0 of the Lua Edu Tools that will be released as soon as Celestia 1.5.0 is released. Then, as I already said earlier, I will work on adding sound support to the Lua Edu Tools.
@+
Vincent
Celestia Qt4 SVN / Celestia 1.6.1 + Lua Edu Tools v1.2
GeForce 8600 GT 1024MB / AMD Athlon 64 Dual Core / 4Go DDR2 / XP SP3
Vincent
Celestia Qt4 SVN / Celestia 1.6.1 + Lua Edu Tools v1.2
GeForce 8600 GT 1024MB / AMD Athlon 64 Dual Core / 4Go DDR2 / XP SP3
Very interesting to hear about your project Ramon!
Some questions:
Where do you find such a mirror, and how do I judge which projector to use? What sort of lense must the projector have? A special wide-angle lens, or just a the default lens?
I have a ~$10k (perhaps more) budget for a projector. Any idea which one should I go for?
If e-planetarium has modified the Celestia source and sell this as a product they are forced to release the source code since Celestia is under the GPL license. I'll send them an email requesting the source code for this.
If it is done as an opengl layer outside Celestia, then it is of course not a problem, so one shouldn't suspect them for license infringement without proper information about this.
Some questions:
Where do you find such a mirror, and how do I judge which projector to use? What sort of lense must the projector have? A special wide-angle lens, or just a the default lens?
I have a ~$10k (perhaps more) budget for a projector. Any idea which one should I go for?
If e-planetarium has modified the Celestia source and sell this as a product they are forced to release the source code since Celestia is under the GPL license. I'll send them an email requesting the source code for this.
If it is done as an opengl layer outside Celestia, then it is of course not a problem, so one shouldn't suspect them for license infringement without proper information about this.
Kenneth Bodin
VRlab/HPC2N, Umeå University
SWEDEN
VRlab/HPC2N, Umeå University
SWEDEN
Hello Bodin.
About the mirror we first buy a security mirror (a Fred Silver mirror) with 18" in diameter. because this is a second surface mirror, we got some "ghost" on the image projected on the dome, but for a start, this was good.
Now we buy a first surface mirror from Acrilconvex in Australia. I been waiting for it to come soon. This one is 24" in diameter. This bigger mirror allow to us bigger liberty in the choose of the projectors.
About the projectors, we had been using an optoma EP 758, which has a 1024 x 768 pixels of resolution, a 3,000 Ansi lumens of bright and a contrast ratio of 2000:1. We had been projecting in a 7 meters dome. It cost to us (here in Mexico) around $3,000 USD. We recently purchase a Del 5100 MP, which has a bigger resolution (1500 x 1040 pixels), so, together with our new mirror, we are going to improve the image very much. This projector cost to us about $ 5,000 USD.
I will post some pictures of the system as soon we get the mirror and mount the system.
We mostly project stellarium, and from time to time celestia and partiview, because we didn't got the time to try to make a distortion program for celestia and partiview. We also use mplayer with a small distortion program to project digital dome movies.
e-planetarium hasn't modified celestia, was Swinburne university who does, they also did the first modified version of stellarium for projection into a dome. I don't know of any one who buy the system to swinburne of e-planetarium, but any way, in the page of stellarium (http://www.stellarium.org) you can download the program with the right distortion for dome projection.
About the mirror we first buy a security mirror (a Fred Silver mirror) with 18" in diameter. because this is a second surface mirror, we got some "ghost" on the image projected on the dome, but for a start, this was good.
Now we buy a first surface mirror from Acrilconvex in Australia. I been waiting for it to come soon. This one is 24" in diameter. This bigger mirror allow to us bigger liberty in the choose of the projectors.
About the projectors, we had been using an optoma EP 758, which has a 1024 x 768 pixels of resolution, a 3,000 Ansi lumens of bright and a contrast ratio of 2000:1. We had been projecting in a 7 meters dome. It cost to us (here in Mexico) around $3,000 USD. We recently purchase a Del 5100 MP, which has a bigger resolution (1500 x 1040 pixels), so, together with our new mirror, we are going to improve the image very much. This projector cost to us about $ 5,000 USD.
I will post some pictures of the system as soon we get the mirror and mount the system.
We mostly project stellarium, and from time to time celestia and partiview, because we didn't got the time to try to make a distortion program for celestia and partiview. We also use mplayer with a small distortion program to project digital dome movies.
e-planetarium hasn't modified celestia, was Swinburne university who does, they also did the first modified version of stellarium for projection into a dome. I don't know of any one who buy the system to swinburne of e-planetarium, but any way, in the page of stellarium (http://www.stellarium.org) you can download the program with the right distortion for dome projection.
Ram???n wrote:Hello Bodin.
About the mirror we first buy a security mirror (a Fred Silver mirror) with 18" in diameter. because this is a second surface mirror, we got some "ghost" on the image projected on the dome, but for a start, this was good.
Now we buy a first surface mirror from Acrilconvex in Australia. I been waiting for it to come soon. This one is 24" in diameter. This bigger mirror allow to us bigger liberty in the choose of the projectors.
About the projectors, we had been using an optoma EP 758, which has a 1024 x 768 pixels of resolution, a 3,000 Ansi lumens of bright and a contrast ratio of 2000:1. We had been projecting in a 7 meters dome. It cost to us (here in Mexico) around $3,000 USD. We recently purchase a Del 5100 MP, which has a bigger resolution (1500 x 1040 pixels), so, together with our new mirror, we are going to improve the image very much. This projector cost to us about $ 5,000 USD.
I will post some pictures of the system as soon we get the mirror and mount the system.
We mostly project stellarium, and from time to time celestia and partiview, because we didn't got the time to try to make a distortion program for celestia and partiview. We also use mplayer with a small distortion program to project digital dome movies.
e-planetarium hasn't modified celestia, was Swinburne university who does, they also did the first modified version of stellarium for projection into a dome. I don't know of any one who buy the system to swinburne of e-planetarium, but any way, in the page of stellarium (http://www.stellarium.org) you can download the program with the right distortion for dome projection.
Ok, this sounds like a good solution. I'm lazy and quite happy to buy from Swinburn et.al. and currently trying to find out what their products include. It is very important though, that the solution we end up running must be open and future proof, so that we can run any version of Celestia or Stellarium, and also further develop and modify the software ourselves.
It seems that there are two things missing to run Celestia off-the-shelf in a mirror dome. First, Celestia by default doesn't have 180 degree dome/fisheye field of view, and secondly, the warping algorithm needed to correct for the mirror projection must be added to either Celestia or the opengl layer.
This warping solution is apparently something that Swinburn/E-planetarium et.al. provide. They also ship a version of Celestia that has been "fixed" to do larger field of view, and this should/must be contributed back to the community according to the GPL. Apparently they are working on releasing this.
Is there a warping software available for Stellarium? I'm not able to find it on the web page, so I would really appreciate a pointer!
Kenneth Bodin
VRlab/HPC2N, Umeå University
SWEDEN
VRlab/HPC2N, Umeå University
SWEDEN
All you have to do is download the stellarium 0.8.2 for the operating system you have (windows, mac, linux). The program itself already includes distortion features (fisheye, spheric mirror,, perspective, etc.).
When you install the program, press the <1> key, this brings a configuration window. In the projection tab you choose fisheye and also mark spheric mirrror distortion. That's it. If you want more control you have to edit the config.ini file, which have the parameters for the dome radius, mirror radius, distance from the projector to the mirror, etc. You have to edit this manually to adap it to the specific conditions of your installation.
We use linux and if your confortable with building programs, you can download the new beta version (stellarium 0.9.0), wich have more parameters for a precise control of the spheric mirror distortion, a large star catalog and a lot more of new features, including audio and image management.
For a specific description on how to set your system, in the main page of stellarium, in the wiki area, you can find a section named "build your own dome". You'll find all the details in there, even a link to a description of the system made it by Paul Bourke, the person who develop the idea of the mirror dome when he works for swinburne. Now he is working for the university of western australia and he develop (with johannes gagdosik) the new features of the spheric mirror distortion for the new version of stellarium.
On the other hand, if you could get a distortion version of celestia, we'll really happy if you can contributed back to the community.
Regards from Mexico
When you install the program, press the <1> key, this brings a configuration window. In the projection tab you choose fisheye and also mark spheric mirrror distortion. That's it. If you want more control you have to edit the config.ini file, which have the parameters for the dome radius, mirror radius, distance from the projector to the mirror, etc. You have to edit this manually to adap it to the specific conditions of your installation.
We use linux and if your confortable with building programs, you can download the new beta version (stellarium 0.9.0), wich have more parameters for a precise control of the spheric mirror distortion, a large star catalog and a lot more of new features, including audio and image management.
For a specific description on how to set your system, in the main page of stellarium, in the wiki area, you can find a section named "build your own dome". You'll find all the details in there, even a link to a description of the system made it by Paul Bourke, the person who develop the idea of the mirror dome when he works for swinburne. Now he is working for the university of western australia and he develop (with johannes gagdosik) the new features of the spheric mirror distortion for the new version of stellarium.
On the other hand, if you could get a distortion version of celestia, we'll really happy if you can contributed back to the community.
Regards from Mexico
Ram???n wrote:Hello bodin, me again.
Sorry, I think I wasn't clear enough on the topic of how to set up your system.
In the wiki area you'll look for the Advanced Topics section. Once you find it, in the projection area you'll see a topic that reads Dome projection for spheric mirror.
Regards
Hi,
Yes, I have learnt now that Stellarium actually has built in support for mirrors too. The e-planetarium solution relies on an external "mirror warping software", that all by itself costs more than any other component in the planetarium, and also runs only on osg and linux, so that was not considered acceptable here.
Glad to see that Stellarium can be used right out of the box for this!
However, what about Celestia then? As far as I know Celestia even do the spherical fisheye transformation, or even show a large enough field of view. Do you have a modified version of celestia?
Kenneth Bodin
VRlab/HPC2N, Umeå University
SWEDEN
VRlab/HPC2N, Umeå University
SWEDEN
Just to correct a few factual errors earlier in this thread:
The fisheye/dome projection features in Stellarium were sponsored by Digitalis Education Solutions way back in 2003 (not Swinburne University). Stellarium is the main planetarium software in our line of Digitarium digital planetarium systems and I am one of the Stellarium developers.
The spherical mirror distortion feature in the main branch of Stellarium was independently implemented by Stellarium developer Johannes Gajdosik on his own. Swinburne had developed their own version but were witholding the source code.
I assume they are doing something similar with their fisheye version of Celestia, where they are trying to keep it from becoming publicly available. If this is the case, there are two options. Shame them into contributing the code back to the project or ask a MirrorDome customer to ask Swinburne for the code (they must provide this under their GPL obligations) and then send it to the Celestia developers for inclusion in the main branch if possible.
Rob Spearman
President
Digitalis Education Solutions, Inc.
http://DigitalisEducation.com
The fisheye/dome projection features in Stellarium were sponsored by Digitalis Education Solutions way back in 2003 (not Swinburne University). Stellarium is the main planetarium software in our line of Digitarium digital planetarium systems and I am one of the Stellarium developers.
The spherical mirror distortion feature in the main branch of Stellarium was independently implemented by Stellarium developer Johannes Gajdosik on his own. Swinburne had developed their own version but were witholding the source code.
I assume they are doing something similar with their fisheye version of Celestia, where they are trying to keep it from becoming publicly available. If this is the case, there are two options. Shame them into contributing the code back to the project or ask a MirrorDome customer to ask Swinburne for the code (they must provide this under their GPL obligations) and then send it to the Celestia developers for inclusion in the main branch if possible.
Rob Spearman
President
Digitalis Education Solutions, Inc.
http://DigitalisEducation.com
They have promised to release the fisheye-modified version of Celestia. I'm going to need it soon enough, and since they provide it as a part of a commercial packages, they must of course release it. I'll ask for it later this week.
I didn't want to be overly explicit about what I think about this sort of behaviour with open source software, but go figure...
The stand-alone mirror warping software from e-planetarium/Swindon costs way more than is acceptable for our project, in particular since it is closed source and they only support osx and linux - and Stellarium already supports this by itself anyway.
However, I have more or less abandoned the idea of a mirror based solution since it introduces assymmetries that are quite hard to cope with in software. We're going for spherical projection with a fisheye instead, and will live with the unused pixels.
I didn't want to be overly explicit about what I think about this sort of behaviour with open source software, but go figure...
The stand-alone mirror warping software from e-planetarium/Swindon costs way more than is acceptable for our project, in particular since it is closed source and they only support osx and linux - and Stellarium already supports this by itself anyway.
However, I have more or less abandoned the idea of a mirror based solution since it introduces assymmetries that are quite hard to cope with in software. We're going for spherical projection with a fisheye instead, and will live with the unused pixels.
digitalis wrote:Just to correct a few factual errors earlier in this thread:
The fisheye/dome projection features in Stellarium were sponsored by Digitalis Education Solutions way back in 2003 (not Swinburne University). Stellarium is the main planetarium software in our line of Digitarium digital planetarium systems and I am one of the Stellarium developers.
The spherical mirror distortion feature in the main branch of Stellarium was independently implemented by Stellarium developer Johannes Gajdosik on his own. Swinburne had developed their own version but were witholding the source code.
I assume they are doing something similar with their fisheye version of Celestia, where they are trying to keep it from becoming publicly available. If this is the case, there are two options. Shame them into contributing the code back to the project or ask a MirrorDome customer to ask Swinburne for the code (they must provide this under their GPL obligations) and then send it to the Celestia developers for inclusion in the main branch if possible.
Rob Spearman
President
Digitalis Education Solutions, Inc.
http://DigitalisEducation.com
Kenneth Bodin
VRlab/HPC2N, Umeå University
SWEDEN
VRlab/HPC2N, Umeå University
SWEDEN
-
- Posts: 53
- Joined: 19.03.2007
- With us: 17 years 8 months
- Location: united kingdom
Hi,
I have psuedocode for how to make a fish-eye distortion for celestia.
The basic idea is to render everything to a cubemap, and then render a geometry to the backbuffer that indexes the cubemap.
here is some setup code
and then once everything is renderered to a cubemap, the fish eye distortion triangles are rendered with the scene cubemap applied as texture, using OpenGL texgen. The same effect could also be applied using the glTexCoord3f(s,t,r); command, passing the compenents of the vertex normal vector to index the cubemap. This next stage is probably best done with glshader language. Anyway the psuedocode is:-
note: this is all based on some old direct3d code, therefore it might not work properly at first.
I have psuedocode for how to make a fish-eye distortion for celestia.
The basic idea is to render everything to a cubemap, and then render a geometry to the backbuffer that indexes the cubemap.
here is some setup code
Code: Select all
struct Vertex
{
Vec3f p;
Vec3f n;
};
int NumTriangles = (NumRings+1) * NumSections * 2;
int NumVertices = (NumRings+1) * NumSections + 2;
Vertex *vertices = new Vertex[NumVertices];
vertices[0].p = Vec3f( 0.0f, 0.0f, fScale );
vertices[0].n = Vec3f( 0.0f, 0.0f, 1.0f );
float r = 0.0f;
int t = 1;
for( int i = 0; i < (NumRings+1); i++ )
{
float phi = 0.0f;
for( j = 0; j < NumSections; j++ )
{
float x = r * sinf(phi);
float y = r * cosf(phi);
float z = 0.5f - 0.5f * ( x*x + y*y );
float nx = -x;
float ny = -y;
float nz = 1.0f;
vertices[t].p = Vec3f( x, y, z );
vertices[t].n = Vec3f( nx, ny, nz );
t++;
phi += (FLOAT)(2_PI / NumSections);
}
r += 1.5f / NumRings;
}
and then once everything is renderered to a cubemap, the fish eye distortion triangles are rendered with the scene cubemap applied as texture, using OpenGL texgen. The same effect could also be applied using the glTexCoord3f(s,t,r); command, passing the compenents of the vertex normal vector to index the cubemap. This next stage is probably best done with glshader language. Anyway the psuedocode is:-
Code: Select all
glEnable(GL_TEXTURE_CUBE_MAP_EXT);
glTexGenfv(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_EXT);
glTexGenfv(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_EXT);
glTexGenfv(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_EXT);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);
// important to make sure that an identity matrix is loaded...
glPushMatrix( identity() );
glBegin( GL_TRIANGLES );
// Generate triangles for the centerpiece
for( int i = 0; i < 2*NumSections; i++ )
{
int i1 = 0;
int i2 = i + 1;
int i3 = 1 + ((i + 1) % NumSections);
glVertex3f( vertices[i1].p.x,vertices[i1].p.y,vertices[i1].p.z );
glNormal3f( vertices[ i1 ].n.x, vertices[ i1 ].n.y, vertices[ i1 ].n.z );
glVertex3f( vertices[i2].p.x,vertices[i2].p.y,vertices[i2].p.z );
glNormal3f( vertices[ i2 ].n.x, vertices[ i2 ].n.y, vertices[ i2 ].n.z );
glVertex3f( vertices[i3].p.x,vertices[i3].p.y,vertices[i3].p.z );
glNormal3f( vertices[ i3 ].n.x, vertices[ i3 ].n.y, vertices[ i3 ].n.z );
}
/// EDIT: Not a triangle strip
// Generate triangles for the rings
m = 1; // 1st vertex begins at 1 to skip top point
for( int i = 0; i < NumRings; i++ )
{
for( j = 0; j < NumSections; j++ )
{
// first triangle
int indx1 = m + j;
int indx2 = m + NumSections + j;
int indx3 = m + NumSections + ((j + 1) % NumSections);
int indx4 = m + j;
int indx5 = m + NumSections + ((j + 1) % NumSections);
int indx6 = m + ((j + 1) % NumSections);
glVertex3f( vertices[ indx1 ].p.x, vertices[ indx1 ].p.y, vertices[ indx1 ].p.z );
glNormal3f( vertices[ indx1 ].n.x, vertices[ indx1 ].n.y, vertices[ indx1 ].n.z );
glVertex3f( vertices[indx2].p.x, vertices[indx2].p.y, vertices[indx2].p.z );
glNormal3f( vertices[indx2].n.x, vertices[indx2].n.y, vertices[indx2].n.z );
glVertex3f( vertices[indx3].p.x, vertices[indx3].p.y, vertices[indx3].p.z );
glNormal3f( vertices[indx3].n.x, vertices[indx3].n.y, vertices[indx3].n.z );
// second triangle
glVertex3f( vertices[indx4].p.x, vertices[indx4].p.y, vertices[indx4].p.z );
glNormal3f( vertices[indx4].n.x, vertices[indx4].n.y, vertices[indx4].n.z );
glVertex3f( vertices[indx5].p.x, vertices[indx5].p.y, vertices[indx5].p.z );
glNormal3f( vertices[indx5].n.x, vertices[indx5].n.y, vertices[indx5].n.z );
glVertex3f( vertices[indx6].p.x, vertices[indx6].p.y, vertices[indx6].p.z );
glNormal3f( vertices[indx6].n.x, vertices[indx6].n.y, vertices[indx6].n.z );
}
m += NumSections;
}
glEnd();
glPopMatrix();
note: this is all based on some old direct3d code, therefore it might not work properly at first.
System: AMD 3200+
512Mb RAM
GeForce 7300 FX 256 mb VRAM
Windows XP Home Edition
Nforce4 Motherboard
Service Pack 2
_____________________
512Mb RAM
GeForce 7300 FX 256 mb VRAM
Windows XP Home Edition
Nforce4 Motherboard
Service Pack 2
_____________________