

Hi(gh)!
On 22.11.20 12:02, M�tes wrote:
> Hi Yadgar,
>
> the original pictures are all 8bit greyscale, and to convert them into 16bit
> didnt help. I want to ask a coworker if there are some GimpFilters to better
> them, maybe that helps. At them moment there are only 265 steps in height, hope
> that I can smooth them a littlebit.
>
> To get better pics I have to invest many hours of look and search in the
> internet, there was no time for this in the past month.
>
> Your movie looks nice, more detailed than mine.
> I plan to check out meshes to but didnt start with it.
> Do you have a skript as a startingpoint for me?
>
> Yes, I am from cologne, you're right.
> I have a small personal blog but my website is down at the moment.
> Will inform the povrayworld when its online again :)
>
> Alaaf,
> Mätes
>
To get "spherical" heightfields which follow the planet's curvature it's
best to have a topographical bitmap in simple cylindrical projection
(side ratio 2:1, which is important!) and then start getting the color
values for each pixel using eval_pigment(), in a nested loop running
from 90 to 90 degrees (latitude) and 180 to 180 degrees (longitude).
Then you convert each color value to a height within the elevation range
of the planet  with Earth and greyscales this would be (assuming a
scale of 1 km per POV unit):
height = radius (i. e. 6377.511.022 for Earth  sealevel radius minus
deepest point of the ocean) + (gray value*255)*((11.022 [Mariana trench]
+ 8.8848 [Mt. Everest])/255)
(or height = radius (6377.50.422) + (gray value*255)*(0.422 [Dead Sea]
+ 8.8848 [Mt. Everest])/255), if your map doesn't include ocean depths)
This height value translates as follows to a 3D point for each mesh vertex:
vertpos = height*<radians(sin(longitude))*radians(cos(latitude)),
radians(sin(latitude)), radians(cos(longitude))*radians(cos(latitude))>
Note that the longitude value has to be multiplied with 1, as Earth
longitudes increase counterclockwise from west to east!
I think you will be able to transfer this to your Martian project
without much effort...
...of course, after that you will have to set up the mesh2 faces from
the index values of the vertices!
The faces are constructed this way:
#declare a = 0;
#declare c = 0;
#while (a < ydim1)
#declare b = 0;
#while (b < xdim1)
#declare Faces[a*ydim+b] = <a*res+b, a*res+b+1, (a+1)*res+b>;
#declare Faces[a*ydim+b+1] = <a*res+b+1, (a+1)*res+b+1, (a+1)*res+b>;
#declare c = c+2;
#declare b = b+1;
#end
#declare a = a+1;
#end
I hope I could help you...
See you in Khyberspace!
Yadgar
Now playing: Madeleine (Bernhard Brink)
Post a reply to this message

