
Yini i-Procedural Tokyo?
I-Procedural Tokyo iyimodeli ye-3D yesikhathi sangempela yase-Tokyo esebenza esipheqululini. Ihlanganisa izakhiwo zangempela, imigwaqo, indawo ephakeme, ojantshi, nezici zendawo nezinto ezenziwa ngezinqubo ezifana nama-facade, amafasitela, impahla yasemgwaqweni, izimoto, ukukhanya, amanzi, isimo sezulu, nezinyoni.
Le phrojekthi isebenzisa idatha yomphakathi evela ku-Project PLATEAU, OpenStreetMap, kanye ne-Geospatial Information Authority of Japan. I-compiler esebenza ngaphandle kwe-inthanethi iguqula amarekhodi omthombo abe ama-tile amancane kanambambili, kanti isiphequluli sisakaza futhi sihlanganisa ama-tile aseduze nekhamera.
Ungazama inguqulo esingethwe ku-jeantimex.github.io/tokyo. Lokhu okuhlangenwe nakho kwenzelwe iziphequluli zamakhompyutha futhi akunconyelwe iziphequluli zeselula.
Hlola Izigcawu Ezitholakalayo
Isigcawu ngasinye sihlanganisa indawo ecishe ibe ngamakhilomitha angu-3.4 ngo-2.8. Izindawo ezifakiwe yilezi:
- Tokyo: Isiteshi sase-Tokyo, i-Marunouchi, nemisele ye-Imperial Palace.
- Shiba: I-Tokyo Tower, i-Zojo-ji, ne-Shiba Park.
- Shibuya: I-Scramble Crossing, i-Shibuya Station, nomgwaqo omkhulu.
- Shinjuku: I-Shinjuku Station, isifunda sezakhiwo ezinde, i-Kabukicho, ne-Shinjuku Gyoen.
- Chiyoda: I-Akihabara, i-Kanda, ne-Ochanomizu.
- Chuo: I-Tsukiji, i-Kachidoki, i-Tsukishima, i-Harumi, izindawo ezingasemanzini, nemisele.
- Fujinomiya: Idolobha eliseduze neNtaba i-Fuji elinendawo engemuva engamakhilomitha angu-60.
I-PLATEAU ihlanganisa amakhulu amadolobha ase-Japan, nakuba izinga lemininingwane elitholakalayo lihluka. Izikhungo zamadolobha zingaba nezimo zophahla ezinemininingwane kanye nokwakheka kwezithombe zasemoyeni, kanti amadolobhana amancane angasebenzisa amabhulokhi ezakhiwo alula.
Izici Eziyinhloko
Izakhiwo Nomhlaba Okubukeka Kwangempela
Izakhiwo zisebenzisa izindawo ezihlala kuzo zangempela, ukuphakama, izitezi, nolwazi lokusetshenziswa. Lapho i-PLATEAU inikeza amagobolondo anemininingwane nezithombe zophahla, lezo zimpahla zisetshenziswa ngqo. Ama-facade akhiqiziwe, amafasitela, amabhalkhoni, ama-parapet, impahla ephezu kophahla, namabhande ezimpawu zezitolo kwengeza imininingwane uma useduze.
Umhlaba usebenzisa imodeli yokuphakama yamamitha amahlanu, izithombe zasemoyeni, izindawo zemigwaqo, ama-kerb, amapaki, amahlathi, namanzi. Izimpawu zomgwaqo zihlanganisa imigqa yemizila, izindawo zokuwela ezinemigqa, imigqa yokuma, imicibisholo, izimpawu zesi-Japanese 止まれ, nemikhawulo yejubane ependiwe.
Impilo Yedolobha Ehambayo
Izimoto zilandela inethiwekhi yangempela yemigwaqo, zishayela kwesokunxele, zilandela imigwaqo enendlela eyodwa nezimpawu zokulawula, zima emigceni ezimpambanweni, futhi zisebenzisa imigwaqo emikhulu nezindawo zokungena nokuphuma. Izitimela zihamba kojantshi bangempela. Isigcawu sihlanganisa namapali ezinsiza, izintambo, izibani zasemgwaqweni, izimpawu zethrafikhi, imishini yokuthengisa, ama-torii, amapulatifomu eziteshi, amabhuloho abahamba ngezinyawo, izihlahla, nezimoto ezipakiwe.
Isikhathi, Isimo Sezulu, Nokubonakala Kwezinto
Isilayida sesikhathi noma iwashi lase-Tokyo elibukhoma lilawula ilanga, inyanga, isibhakabhaka, izithunzi, nokuchayeka kokukhanya. Njengoba kuhlwa, izibani zedolobha ziyakhanya ngaphambi kokuba ubumnyama bungene ngesikhathi sokuhwalala. I-renderer iphinde isekele amafu anevolumu, ukubonakala komkhathi, amanzi anamagagasi, ukubonakala kwamafasitela, izimpawu ezikhanyayo, izibani zangaphambili, nokukhanya kwe-Tokyo Tower.
Imihlambi yezinyoni ingahlala ezihlahleni bese iphinda indize. Esigcawini sase-Fujinomiya, indawo engemuva yomhlaba engakhiqiziwe kakhulu ibeka iNtaba i-Fuji ngemuva kwedolobha futhi ihlanganisa izithombe zasemoyeni nekhephu phezulu.
Faka Futhi Usebenzise Le Phrojekthi
Clone i-repository bese ufaka okuncikile kuyo nge-npm:
npm install
Landa ama-texture e-CC0 asetshenziswa yiphrojekthi. Lesi sinyathelo sidingeka kanye futhi sigcina cishe u-14 MB ku-public/textures/:
node tools/assets/fetch_textures.mjs
Okulandelayo, landa idatha eluhlaza yendawo. Isibonelo esilandelayo silanda idatha yomthombo yase-Tokyo:
npm run fetch -- --area=tokyo
Hlanganisa amarekhodi alandiwe abe ama-tile alungele isiphequluli:
npm run compile -- --area=tokyo
Ekugcineni, qalisa iseva yokuthuthukisa:
npm run dev
Vula i-http://localhost:5280 esipheqululini sedeskithophu. Amafayela edolobha ahlanganisiwe awafakwa ku-repository, ngakho indawo ngayinye kufanele yakhiwe kabusha kusuka kudatha yayo yomthombo.
Qonda Inqubo Yedatha
Inqubo inezigaba ezimbili eziyinhloko. Umyalo we-fetch ulanda amafayela omthombo ku-data/raw/<area>/ nezithombe zasemoyeni ku-public/ortho/<area>/. Umyalo we-compile uguqula lawo marekhodi abe ama-tile asakazwayo ngaphansi kwe-public/tiles/<area>/.
Qalisa yonke inqubo yendawo ekhethiwe ngalo myalo:
npm run fetch -- --area=shibuya
npm run compile -- --area=shibuya
Okulandiwe okuluhlaza kungaba kukhulu ngoba kufakiwe izithombe zezakhiwo ze-PLATEAU. I-README ibala cishe u-3.6 GB e-Tokyo, u-3.0 GB e-Shiba, u-1.3 GB e-Shibuya, no-0.2 GB e-Fujinomiya. Ukuhlanganisa kuthatha imizuzwana kuya emizuzwini embalwa kuye ngendawo.
Hlola Futhi Uvivinye Idatha Ehlanganisiwe
Dala ukubuka kuqala kwendawo kusuka phezulu ngalo myalo:
npm run preview -- --area=tokyo
Qalisa izivivinyo zephrojekthi ukuze uhlole ukujikeleza kwama-tile nokuvuleka kwezimpawu zomgwaqo:
npm test
Lezi zivivinyo ziwusizo ikakhulukazi ekuqondaniseni umhlaba. Izindawo zemigwaqo, izimpawu zemizila, nezimpawu zihlukaniswa ngokulandela onxantathu bemesh yomhlaba ukuze zihlale ngaphezu komhlaba otshekile futhi zingacwili emingceleni yama-tile.
Sebenzisa Izilawuli Zesiphequluli
- Hudula ukuze uhambise ukubuka.
- Hudula ngenkinobho yesokudla ukuze uzungezise.
- Sebenzisa isondo legundane ukuze usondeze noma uhlehlise.
- Sebenzisa i-
WASDukuze uhambe. - Bamba i-
Shiftngesikhathi uhamba ukuze uhambe ngokushesha. - Cindezela u-
Nukuze ushintshe phakathi kwemini nobusuku. - Chofoza isakhiwo ukuze usihlole.
Iphaneli ethi Settings ekhoneni eliphezulu kwesokudla ikuvumela ukuthi ushintshe izindawo futhi ulungise isikhathi, isiminyaminya, amafu, ukukhanya, kanye nekhwalithi yokunikezwa kwezithombe. Izilungiselelo zigcinwa esipheqululini.
Vula Isigcawu Ngamapharamitha E-URL
Amapharamitha e-URL awusizo ekwabelaneni ngokubuka okuthile noma ekuhloleni ukucushwa kokunikezwa kwezithombe. Isibonelo:
https://jeantimex.github.io/tokyo/?area=shibuya&time=18.5&traffic=0
Amapharamitha asekelwayo afaka:
area=tokyo|shiba|shibuya|shinjuku|chiyoda|chuo|fujinomiyaikhetha indawo.time=18.5isetha ihora lendawo lase-Tokyo.night=1ishintshela kumodi yasebusuku.cam=x,z,distance,azimuth,elevationisetha ikhamera.radius=900ilawula ibanga lokubuka elisebenzayo.traffic=0ikhubaza isiminyaminya.cars=600ishintsha inani lezimoto.birds=150ishintsha inani lezinyoni.clouds=0.25ilawula ubuningi bamafu.ortho=0ikhubaza imodi ye-orthographic.
Ikhasi elivulwe ngamapharamitha e-URL alibhali phezu kwezilungiselelo ezigciniwe esipheqululini.
Indlela Ama-Tile Ahlanganisiwe Asebenza Ngayo
Ikhasimende lisebenzisa uhlelo lwendawo lwamamitha olusendaweni, olunesiqalo maphakathi nendawo. I-eksisi ye-x ikhomba empumalanga, i-eksisi ye-y ikhomba phezulu, kanti i-eksisi ye-z ikhomba eningizimu. Ama-tile ayizikwele ezingamamitha angu-256 futhi ahlanganiswa kuma-Web Worker ngesikhathi isayithi lisakaza ama-tile aseduze nokubuka kwamanje.
Indawo ehlanganisiwe iqukethe amafayela alandelayo:
manifest.jsonigcina isiqalo, imingcele, uhlu lwama-tile, igridi yendawo, izitezi zamabhuloho, kanye nolwazi lokubonga imithombo.t_<x>_<z>.binigcina i-tile eyodwa yezakhiwo, izindawo ezingaphansi, upende wemigwaqo, izinto eziseceleni, izintambo, kanye nezimpawu.terrain.binigcina igridi yokuphakama kwendawo ye-Float32 enezikhala zamamitha amahlanu.roads.jsonigcina igrafu yemigwaqo, amazinga amaphuzu, kanye nezimpambanomgwaqo ezinezimpawu.rails.jsonkanye ne-structures.jsonkugcina imigqa yezitimela, amapulatifomu, izembozo, kanye namabhuloho abantu abahamba ngezinyawo.backdrop.binigcina indawo ekhethiwe enesinqumo esiphansi ezungeze indawo.
Engeza Noma Lungisa Indawo
Ukuze ungeze elinye idolobha elimbozwe yi-PLATEAU, chaza okufakiwe ku-tools/pipeline/config.mjs. Indawo ichaza iphoyinti eliphakathi kanye nezikwele zegridi ze-PLATEAU ezizocutshungulwa. Ingachaza futhi usayizi ongemuva ongakhethwa kanye nokubuka kwekhamera ekuvuleni.
Yonke imibhalo ye-pipeline yamukela inketho yendawo efanayo:
npm run fetch -- --area=my-area
npm run compile -- --area=my-area
npm run preview -- --area=my-area
Amafayela e-PLATEAU alandwa nge-API yekhathalogi yedatha ye-PLATEAU. I-pipeline isusa amarekhodi aphindaphindiwe ngokusebenzisa i-gml:id, okubalulekile lapho isikwele sedathasethi yase-Tokyo sivela ngaphansi kwewadi engaphezu kweyodwa. Ukumbozwa kuyehluka phakathi kwamadolobha, ngakho ikhasimende lisebenzisa imininingwane ekhiqiziwe njengesipele lapho amagobolondo anemininingwane, ukwakheka kwezithombe, noma ifenisha yasemgwaqweni kungatholakali.
Imininingwane Yobuchwepheshe Ethuthukile
Indawo, Imigwaqo, Namabhuloho
Idatha ye-PLATEAU, OpenStreetMap, kanye ne-GSI ifakwa kugridi eyodwa yendawo esebenzisa amamitha. Igridi yokuphakama eyabiwe enezikhala zamamitha amahlanu inikeza ama-tile angomakhelwane ukuphakama okufanayo emaphethelweni awo. Izisekelo zezakhiwo ziqhathaniswa nendawo ngesikhathi sokuhlanganiswa, futhi umehluko uyarekhodwa.
Imingcele yemigwaqo engenamininingwane ihlukaniswa ibe imigwaqo yezimoto kanye nemigwaqo yabahamba ngezinyawo kusetshenziswa imigqa emaphakathi ye-OpenStreetMap. Amabhuloho kanye nemigwaqo ephakeme bathola amaphrofayela ahlukene: amabhuloho asemgwaqweni alinganiswa ukusuka kolunye uhlangothi kuya kolunye, imigwaqo emikhulu iphakanyiswa ngokwesendlalelo, kanti amarampu alungiswa ngobude ukuze axhumeke kahle.
Ukukhanya Nokubonakala Kwezinto
Esikhundleni sokudala ukukhanya okuguqukayo okuhlukile kwesibani ngasinye, izibani zasemgwaqweni kanye nezibani zangaphambili zidwetshwa kumephu yokukhanya. Imithombo egqagqene igcina inani elikhanya kakhulu, kanti idatha yokuphakama kwesibani ivimbela izibani ezingaphansi kwebhuloho eliphakeme ekukhanyiseni isitezi salo.
Ukubonakala kwamanzi kudweba idolobha futhi okwesibili ngaphansi kobuso bamanzi. Amagagasi ahlanekezela umphumela, kanti ukubonakala kwamafu kusampula imephu yesimo sezulu. Ingilazi yamafasitela imakwa esiteshini se-alpha sesigcinalwazi sombala bese icutshungulwa esigabeni sokubonakala kwezinto esikhaleni sesikrini.
Ukunikezwa Kwezithombe Nokusebenza
Isinikezi sisebenzisa i-three.js kanye ne-composer ye-postprocessing ye-pmndrs. Imiphumela yaso ihlanganisa i-n8ao ambient occlusion, ukubonakala kwezinto, umkhathi, amafu, i-bloom, kanye ne-tone mapping. Izinyoni zibekwa ku-vertex shader, okwenza imihlambi emikhulu isebenzise isikhathi esincane kakhulu se-CPU.
Ukuze kuthuthukiswe ukusebenza, gcina ibanga elisebenzayo lilinganiselwe, yehlisa inani lezimoto nezinyoni, khubaza amafu, noma wehlise ikhwalithi yokunikezwa kwezithombe kuphaneli ethi Settings. Imodi yokusakaza ezenzakalelayo ilayisha ama-tile aseduze; inketho ethi whole city ilayisha wonke ama-tile atholakalayo futhi ingadinga inkumbulo eningi kakhulu.
Sabalalisa Isayithi Elihlanganisiwe
Ngemva kokuhlanganisa izindawo ofuna ukuzishicilela, sebenzisa:
npm run deploy
Lokhu kwakha ukusatshalaliswa bese kuphushela ngenkani i-dist/ njenge-commit eyodwa egatsheni le-gh-pages le-origin yenqolobane. Ukusatshalaliswa kufaka noma yimaphi amadolobha ahlanganiswe kulowo mshini. I-README ilinganisela cishe ku-650 MB ezindaweni eziyisikhombisa ezifakiwe.
Ukubonga Imithombo Yedatha Namalayisense
Ikhodi ikhishwa ngaphansi kweLayisensi ye-MIT, kodwa idatha yedolobha isalokhu ingaphansi kwemigomo yemithombo yayo yokuqala. I-Project PLATEAU inikeza amamodeli amadolobha e-3D, izithombe zophahla, amabhuloho, kanye nefenisha yasemgwaqweni. I-GSI inikeza idatha yokuphakama kanye nezithombe zasemoyeni. Abanikeli be-OpenStreetMap banikeza imigwaqo, ojantshi, nezindawo ngaphansi kwe-ODbL. Izinto zokwakha ze-Poly Haven ziyi-CC0, izihlahla zisebenzisa i-ez-tree ngaphansi kwe-MIT, kanti izingxenye zomkhathi namafu zivela ku-three-geospatial ngaphansi kwe-MIT.
Isiphetho
I-Procedural Tokyo ikhombisa ukuthi amasethi edatha omphakathi ezendawo angaguqulwa kanjani abe yinto ecebile nenyakazayo esipheqululini. Ukuze uyisebenzise, faka okuncikile, landa izinto zokwakha nedatha yendawo, hlanganisa idatha ibe amathayela, bese uqala iseva yokuthuthukisa. Kusukela lapho, amapharamitha e-URL, ukumiswa kwepayiphi, izivivinyo, nemiyalo yokushicilela kunikeza izindlela ezisebenzayo zokuhlola nokwandisa iphrojekthi.
