Opengl ben ejjel nappal terkep kirajzolasa

Opengl ben ejjel nappal terkep kirajzolasa
2014-02-14T23:17:10+01:00
2014-02-18T12:16:55+01:00
2022-10-15T22:50:48+02:00
demodemo
Udv!

Day and Night World Map

Azt szeretnem megtudni, hogy hogyan lehet egy ehhez hasonlo dolgot kesziteni.
Szeretnek egy ilyet szamolni real time. A legjobb az lenne ha offline is menne.

Openglben kirajzolok egy foldgombot. Shaderezessel szeretnek valahogy generalni egy ejjel nappal terkepet ra.

Hogyan megoldhato az ilyen?
Mutasd a teljes hozzászólást!
szerintem,

gondolom a zenitet/azimutot nem kell magyarázni, rengeteg leírást találni róluk, legfeljebb annyit, hogy

a real_het által írt shader (is) feltételezi, hogy a Földet reprezentáló objektumhoz képest, abban a térben a Napnak megfelelő fényforrás elhelyezkedik valahol,
neked nyilván erre a "pozícióra" van szükséged egy adott "időponthoz",

nyilvánvalóan valójában az "ahol éppen vagyunk" (látszólag) "érdektelen", mivel neked a teljes Földre kell "számolnod",
nyilván azért érdekes, mert valójában valamihez képest viszonyítanod kell, hiszen nem mindegy, hogy az időt milyen időzónának megfelelően adod meg (és persze itt jön az is, hogy ugye az időzónák viszonylag "széles csíkot" takarnak, meg persze "bekavarhat" még a téli/nyári időszámítás is),

az első hozzászólásomban, a legelső ajánlott linken alul találsz egy viszonylag hosszabb "levezetést", bár elég nehéz lehet követni, mivel egyrészt "Mathematica-ban" íródott, másrészt teli van "mágikus számokkal" stb., persze az említett szoftverben van beépített fv. a Nap ilyen jellegű adatainak a lekérdezésére, de az most mindegy is, 

a megértéshez talán érdemes utánanézni 1-2 csillagászati kifejezésnek mondjuk a wikipédián: Napforduló, és a kezdőhozzászólásodban említett linken levő alkalmazást próbálgatni, a kiemelt időpontokat (equinox/solstice) is figyelembe véve, stb., meg persze real_het shaderét is nézegesd, hogy vajon az egér pozíciója hogyan is feleltethető meg a zenitnek/azimutnak...

szerintem,


szerkesztve: bocsánat, mikor elkezdtem írni, akkor még a mai hozzászólásod nem volt kint,
Mutasd a teljes hozzászólást!

  • nem Java, nem JOGL, de az elv:
    graphics - Composition: how to make a day and night world map? - Mathematica Stack Exchange

    a kivitelezéshez meg:
    Google

    szerkesztve:
    3D-ben "gondolatébresztőnek" (WebGL, three.js-re építve):
    three.js webgl - materials - earth night/day
    Mutasd a teljes hozzászólást!
  • Es az elv a gyakorlatban elvileg:

    http://glsl.heroku.com/e#14306.1
    (mozgasd rajta az egeret! webgl kell hozza, chrome-on megy)

    #ifdef GL_ES precision mediump float; #endif #define PI 3.1415926 uniform float time; uniform vec2 mouse; uniform vec2 resolution; //kiszamolja a normalvektort a 'textura' mentén (0..1, 0..1) vec3 calcNormal(vec2 v) { v *= vec2(PI*2.0, PI); vec3 n; n.x = sin(v.y)*sin(v.x); n.y = -cos(v.y); n.z = sin(v.y)*cos(v.x); return n; } void main( void ) { //1. fold normalanak kiszamolasa vec3 n = calcNormal(gl_FragCoord.xy/resolution); //2. mouse (nezes iranya) normaljanak kiszamiolasa vec3 m = calcNormal(mouse); //3. fenyero szamolasa a 2 normalbol float light = dot(n,m)*5.0; gl_FragColor = light*vec4(1,1,1,0); }
    Mutasd a teljes hozzászólást!
  • Találtam egy ilyet:

    KlausBrunner/solarpositioning

    Ezzel elvileg datetime+lat+lon-ból megkapjuk a nap pozicióját. (azimuth, zenit)

    valaki tudja értelmezni, hogy ebből hogy lesz az ami nekem kéne?:)
    a lat+lon gondolom az a pozició, ahol éppen vagyunk.

    a zenith, azimuth az mi? Ebből hogy fogok egy oylan térképet rajzolni?:)
    Mutasd a teljes hozzászólást!
  • OK lassan összejön...

    Klaus kódjából megkapom a Nap Azimuth-át és Zenith-jét, ebből pedig ki tudom számolni a nap helyzetét XYZ-ben egy tetszőleges radius alapján.


    Ez ahhoz kell, hogy hol van az égen a napom. Ez eddig fantasztikus, de az eredeti problémám az, hogy tudjam rárakni a textúrát rendesen a sshaderben oda ahova való:)

    A shaderben van egy iylen kódom:

    // compute cosine sun to normal so -1 is away from sun and +1 is toward sun. + " float cosineAngleSunToNormal = dot(normalize(v_normal), uSunDirection);\n" // // sharpen the edge beween the transition + " cosineAngleSunToNormal = clamp( cosineAngleSunToNormal * 10.0, -1.0, 1.0);\n" // // convert to 0 to 1 for mixing + " float mixAmount = cosineAngleSunToNormal * 0.5 + 0.5;\n" // // Select day or night texture based on mix. + " vec3 color = mix( c3.rgb, c1.rgb, mixAmount );\n" // + " gl_FragColor = vec4( color, 1.0 );\n" //


    Ez kb összemossa a nappal/éjjel képeket és a
    uSunDirection
    -al számolja rá a képre. Hogy lehetne összehozni a 2 kódot?
    Mutasd a teljes hozzászólást!
  • szerintem,

    gondolom a zenitet/azimutot nem kell magyarázni, rengeteg leírást találni róluk, legfeljebb annyit, hogy

    a real_het által írt shader (is) feltételezi, hogy a Földet reprezentáló objektumhoz képest, abban a térben a Napnak megfelelő fényforrás elhelyezkedik valahol,
    neked nyilván erre a "pozícióra" van szükséged egy adott "időponthoz",

    nyilvánvalóan valójában az "ahol éppen vagyunk" (látszólag) "érdektelen", mivel neked a teljes Földre kell "számolnod",
    nyilván azért érdekes, mert valójában valamihez képest viszonyítanod kell, hiszen nem mindegy, hogy az időt milyen időzónának megfelelően adod meg (és persze itt jön az is, hogy ugye az időzónák viszonylag "széles csíkot" takarnak, meg persze "bekavarhat" még a téli/nyári időszámítás is),

    az első hozzászólásomban, a legelső ajánlott linken alul találsz egy viszonylag hosszabb "levezetést", bár elég nehéz lehet követni, mivel egyrészt "Mathematica-ban" íródott, másrészt teli van "mágikus számokkal" stb., persze az említett szoftverben van beépített fv. a Nap ilyen jellegű adatainak a lekérdezésére, de az most mindegy is, 

    a megértéshez talán érdemes utánanézni 1-2 csillagászati kifejezésnek mondjuk a wikipédián: Napforduló, és a kezdőhozzászólásodban említett linken levő alkalmazást próbálgatni, a kiemelt időpontokat (equinox/solstice) is figyelembe véve, stb., meg persze real_het shaderét is nézegesd, hogy vajon az egér pozíciója hogyan is feleltethető meg a zenitnek/azimutnak...

    szerintem,


    szerkesztve: bocsánat, mikor elkezdtem írni, akkor még a mai hozzászólásod nem volt kint,
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd