Daha çox

ArcScene-dən ixrac olunan 3d veb səhnədəki toxuması olmayan binalar

ArcScene-dən ixrac olunan 3d veb səhnədəki toxuması olmayan binalar


Binalardan təsadüfi bir nümunə götürülən doku yoxdur. Modellər Sketchup 8-də hazırlandı və COLLADA-ya ixrac edildi, sonra ArcScene-də buraxıldı. Bütün toxumalar .jpg "> ixrac 3d arxcene cityengine veb səhnəsidir

Xüsusi buraxılış "Uzaqdan Algılamaya əsaslanan Bina çıxarılması"

Xüsusi bir nömrəsi Uzaqdan Algılama (ISSN 2072-4292). Bu xüsusi buraxılış "Şəhərdən Uzaqdan Algılama" bölməsinə aiddir.

Əlyazma qəbulu üçün son tarix: bağlıdır (31 Oktyabr 2019) .

Çap olunmuş nəşr mövcuddur!
Bu Xüsusi Nəşrin çap olunmuş versiyası burada mövcuddur.


1 Cavab 1

Sualda təsvir olunan şey, ehtimal ki, modeldəki UV məlumatlarının itkin olması ilə əlaqədardır (və ya bütün UV-lər sıfıra qoyulmuşdur).

Bunu həll etmək üçün orijinal modeli Blenderə yükləyin və UV xəritəsi əlavə edin. Yəqin ki, modeli açmalısınız və bəlkə də açıldıqdan sonra bəzi UB-ləri əl ilə tənzimləyin.

Yalnız Blender-də model toxumasını görməyin nöqtəsinə gəlin, Blender toxumaları UV-lər olmadan meshlarda eşidə bilər, lakin əksər oyun mühərriklərinə ixrac olunmayacaq (hamısı olmasa).

Sual verən istifadəçi artıq nəyin baş verdiyini bilir, amma daha dolğun cavab üçün cavabın üzərinə əlavə edirəm

Bir modeli açmaq üçün

Görünüşlərdən birində görünən UV redaktoru ilə bölünmüş bir görünüş istifadə etmək məsləhətdir. Blender-də baxışları bölmək üçün: https://www.youtube.com/watch?v=rhh513vUgME

Sonra modellə görünüşdə işləyin, modeli seçin, redaktə rejiminə daxil olun, U-yə basın, görünən kontekst menyusunda Açın və ya Blender-in təklif etdiyi açma alqoritmlərindən hər hansı birinə klikləyin. açdıqdan sonra, mümkünsə sıfıra qədər etməli olacaq).

Hər şeyin UV ilə uyğun olub olmadığını UV Xəritə redaktorunda iki dəfə yoxlayın, səhv gördüklərinizi düzəldin. Bu sənətkar işidir və intuisiya əsas rol oynayır.

İndi toxuma panelinə gedin və UV xəritəsini istifadə etmədiyinizi və koordinatlar yaratmadığınızı yoxlayın.

Nəhayət modelinizi ixrac edin, ehtimal ki, FBX Blender və Unity ilə işləyərkən mövcud olan ən yaxşı seçimdir. Və ya Unity'nin qarışıq sənədini idarə etməsinə icazə verin (qarışıq sənədlərimi Birlik varlıqları qovluğundan, uzun hekayədən uzaqlaşdırıram və yalnız FBX ixracını orada yerləşdirirəm. Bu heç bir standart prosedur və ya başqa bir şey deyil, yalnız mənim şəxsi seçimimdir).

Bu suala gəldikdə, xarici bir materialdan istifadə, ehtimal ki, materialın artıq UV məlumatlarını istifadə etmək üçün konfiqurasiya edildiyi deməkdir. Beləliklə, Blenderdəki toxuma panelinin xüsusiyyətlərini dəyişdirmə mərhələsi heç bir təsir göstərə bilməz. Hər ikisini, öz modellərinizi və materiallarınızı yazarkən, yəqin ki, Blender-də doku panelini yoxlamalısınız.


2 Cavablar 2

Bunun üçün Photoshop-un Vanishing Point filtrindən istifadə edə bilərsiniz.

Başqa bir 3D proqramından bəhs etmədiyiniz üçün əlinizdə olduğunu düşündüyüm 3 ölçülü Photoshop versiyasını istifadə etmək asandır. Photoshop-un 3D xüsusiyyətlərindən məhrum olan bir versiyasını istifadə edənlər üçün alternativ bir yol var.

Bu texnika ən yaxşı düz xəttli bir fotoşəkil ilə işləyir, yəni heç bir təhrif edilmədən bir şəkil. Təhrif Photoshop-un fotoşəkildə olan xüsusiyyətlərlə dəqiq uyğunlaşan 3B həndəsə yaratmasını mümkünsüz edir. Photoshop-un yaratmaq üçün yaratdığı həndəsəni əl ilə düzəldə bilərsiniz səhv qeyri-dəqiq fotoşəkilinizə uyğun model, ancaq bu qaçılmaz bir çətinlikdir.

Düzbucaqlı bir fotoşəkil əldə etməyin ən yaxşı yolu şəkil çəkmək üçün aşağı distorsiyalı bir lens istifadə etməkdir. DxO lens verilənlər bazası birini seçməyə kömək edə bilər. Əlavə olaraq Lightroom və ya ACR-in lens düzəltmə xüsusiyyəti tərəfindən dəstəklənən bir lens istifadə etməlisiniz, sonra ondan 3B model qurmağa çalışmadan əvvəl fotoşəkildə bu avtomatik düzəlişdən istifadə etməlisiniz.

Budur, buna necə gedirsən:

Fotoşopunuzu fotoşəkildə açın, sonra Filtr et və rarr Vanishing Point deyin. Təyyarə Yarat alətindən istifadə edərək, tamamilə görünən iki yastığın oturma səthinin ətrafına bir qutu çəkin.

Bu təyyarəni necə qurduğunuz barədə kifayət qədər dəqiq olmalısınız, çünki burada olan səhvlər 3D modelin qalan hissəsinə yayılacaqdır. Photoshop bu işdə sizə kömək edəcəkdir: təyyarənin içərisindəki şəbəkə təyyarənin nə qədər inandırıcı olduğunu göstərmək üçün rəngini dəyişdirir. Sarı və ya qırmızı deyil, mavi bir tor görmək istəyirsən. Mavi bir ızgara səhnəniz üçün doğru olduğuna zəmanət vermir, bununla belədir ola bilər düzgün.

Command (Mac) və ya Control (Windows) düymələrini basıb saxlayarkən, o qədər yastıqların ön kənarına yeni bir şaquli təyyarəni endirmək üçün həmin təyyarənin ön kənarındakı ölçülər qutusundan aşağı sürüşdürün.

İndi kameraya ən yaxın yastığı əhatə edən təyyarələr yaratmaq üçün Cmd / Ctrl-drag hərəkətinin 4 dəfə təkrarlanmasını təkrarlayın: əvvəlcə yastığın gizli qabağını örtmək üçün şaquli, sonra oturma sahəsini əhatə edən üfüqi, sonra daha iki şaquli kameraya baxan tərəfləri örtmək üçün olanlar.

Nəhayət, daxili künc yastığının oturma səthini örtmək üçün ilk təyyarəni uzatın.

Bu təyyarələri görünən səthi örtmək üçün ölçüsünü düzəldin, baxmayaraq ki, bu fotoşəkilin yastıqların bir hissəsi olmayan bəzi sahələrini əhatə etməlidir: ²

Təyyarənin əhatə dairəsini daha sonra tənzimləyəcəyik.

Birinci təyyarədən irəlilədikcə yenilərinin divan səthləri ilə getdikcə daha zəif bir şəkildə uyğunlaşdığını görürsənsə, ən çox ehtimal olunan səbəb ilk təyyarəni yastığın oturduğu səthə tam uyğunlaşdırmamağınızdır. Bu səhv düzəldilmiş təyyarədən uzandıqda, o səhvi böyüdürsən. Bunun üçün ən yaxşı düzəliş ilk təyyarədən başqa hamısını silmək, daha sonra səhnəyə daha yaxşı uyğunlaşması üçün künclərini biraz çimməkdir. Bu 5 təyyarəni yenidən uzatdığınız zaman, səhnə ilə daha dəqiq uyğunlaşmalıdırlar.

Başqa bir ehtimal səbəbi, düz xəttli bir fotoşəkil ilə başlamaq üçün yuxarıdakı tövsiyələrə məhəl qoymamağınızdır.

Vanishing Point filtrinə, 3D qatını Photoshop-a qaytarmaq istədiyini söyləyin:

Photoshop versiyanızda bu xüsusiyyət yoxdursa, hələlik Vanishing Point filtrində qalın. Bu birbaşa 3D dəstəyi çatışmazlığı üzərində işləmək üçün növbəti addımı bir az fərqli edəcəyik.

Əks təqdirdə, Tamam deyin və təsvir etdiyiniz divan səthlərinin ibtidai bir modeli ilə yeni bir 3D qat əldə edəcəksiniz.

Bu, orijinal sualınıza çox cavab verir. Bəli, 3D şəklində yalnız 6 səthdir, tam olaraq ətraflı bir model deyil, ancaq gördüyünüz kimi, bəzi məqsədlər üçün kifayətdir.

Bundan sonra edəcəyimiz şey kamera xəritələməsinə bənzəyir, tez-tez VFX-də 2B səhnədə tam 3D getmədən sürətli 3D effektləri əldə etmək üçün istifadə olunan bir üsul. Bir fotoşəkili kobud 3D geometriyasına yansıtmaq əvəzinə, dokuların fotoşəkilə proyeksiyasına kömək etmək üçün kobud 3D həndəsəmizi istifadə edəcəyik.

3-cü təbəqəni Vanishing Point filtr dialoqundan Photoshop-a qaytardığınızda, 3D iş sahəsinə keçmək istədiyinizi soruşa bilər³ təklifi qəbul edin.

Yeni təbəqə üçün ölçü vahidləri haqqında soruşarsa, sizi sevindirirsə, dəqiq dəyərləri doldura bilərsiniz, lakin bu cavabın gəldiyi qədər nəticələrə təsir göstərmir. Bu, yalnız 3D qatı başqa bir proqrama ixrac edəcəyiniz və daha böyük bir səhnə miqyasına uyğun yeni həndəsəyə ehtiyac duyacağınız üçün vacibdir.

Artıq təməl fotoşəkil üzərində laylanmış ibtidai 3D modelinizi görəcəksiniz. Photoshop, bu model üçün əsas fotoşəkildən doku çıxarmağa çalışacaq, ancaq bu 3D səthləri əvəzinə istədiyimiz toxuma ilə doldurmaq üçün Photoshop-un rəsm alətlərindən istifadə edəcəyimizdən narahat olmayın.

Burada naxışlı fırçanı cəlbedici bir naxışla istifadə etdim, nəticədə effektini görmək asandır. Başlamaq üçün bütün səthləri toxumanızla doldurun:

Nümunənin uyğun bir perspektivdə olduğuna, məsafəyə doğru daraldığına diqqət yetirin. Bu, 2 ölçülü səhnəmizin kobud həndəsəsinə uyğun bir 3D səthə çəkdiyimiz üçün baş verir.

Vanishing Point təyyarələrindən 3B obyekt yaratmaq bacarığından məhrum olan bir versiyadan istifadə edirsinizsə, düz dokuları təyyarələrə kopyalamaq üçün Vanishing Point dialoqunun içindəki Stamp alətindən istifadə edə bilərsiniz. Bu, toxumunuzu səhnəyə uyğun perspektivdə tətbiq etmək olan 3B modelə boyama ilə eyni təsirə malikdir.

Seçim / Alt düyməsini basaraq qatın maska ​​nişanını vuraraq 3D qatına qara qat maskası əlavə edin, sonra naxışı göstərmək istədiyiniz ərazilərə ağ rəng çəkin:

Gördüyünüz kimi burada çox kobud bir iş gördüm. Böyük bir sərt fırça və böyük, səliqəsiz vuruşlardan istifadə edərək qəsdən maskanı ehtiyac duyduğumdan bir qədər böyüddüm. Bu sizə 30 saniyədən çox çəkirsə, vaxt itirirsiniz. Növbəti addımda bəzi detallı işlərlə maskanı yenidən boğacağıq.

Qatın qeyri-şəffaflığını təxminən% 50-yə endirin, beləliklə yastıq kənarlarını görmək üçün altdakı fotoşəkili yaxşı görə bilərsiniz, sonra naxış göstərmək istədiyiniz 3D modelinin yalnız hissələrini əhatə etmək üçün maskanızın kənarlarını diqqətlə düzəldin.

Pro ipucu: Photoshop fırçası ilə tək bir vuruşun ardından başqa bir yerdə Shift düyməsini vurmağınız asanlıqla əl ilə çoxaltmaq mümkün olmayan gözəl bir düz vuruş verir. Burada sərt bir fırça ilə bir yastığın bir küncünə yaxın qatdakı maska ​​üzərinə vura bilərsiniz ki, fırça yastığın kənarına azca toxunsun, sonra Shift düyməsini basaraq yastığın kənarı boyunca digər küncdən eyni məsafəni vurun. . Bu, maska ​​ekskursiyalarını düz kənarlardan kənarda tez və dəqiq bir şəkildə kəsməyə imkan verir.

3D təbəqənin qeyri-şəffaflığını 90-100% -ə qaldırın və qarışıq rejimini uyğun bir şeyə keçirin. Bu toxuma və arxa plan birləşməsi üçün Lineer Burn yaxşı işləyir: ⁵

Voilà, elektron döşəmə!

İndi bu texnika mükəmməl deyil. Model yalnız bir neçə təyyarədən ibarətdir, buna görə üzərinə çəkilmiş toxumalar divanın əyriləri ətrafında dəqiq əyilmir. Yuxarıdakı şəkildə gördüyünüz kimi, bu məhdudiyyət bəzi praktik məqsədlər üçün əhəmiyyətli olmaya bilər. Fotoşəkildəki kölgələr toxuma ilə qarışıqdır, fakturanın divan səthinə möhkəm büküldüyü xəyalını vermək, əslində belə deyil.

Bunu düzəltməyin sürətli bir yolu, ehtiyacınız varsa, konturları izləmək üçün toxumasını bir az əymək üçün Liquify və Warp filtrlərindən istifadə etməkdir.

Avtomatik toxuma dəyişdirmələrini həyata keçirmək üçün həqiqətən dəqiq bir modelə və ya 2D UV xəritə sənədinə ehtiyacınız varsa, bir neçə seçiminiz var:

Yuxarıdakı 1 və 2-ci addımlardan keçin. Sonra, uçuş menyusundan "3D Layer-i Photoshop-a Dön" seçimini seçmək əvəzinə Photoshop-a 3DS-ə ixrac etməsini söyləyin.

Bu, bir çox digər 3D tətbiqetmənin də aça biləcəyi 3ds Max faylı əldə edir. Bu format kifayət qədər geniş istifadə olunur ki, ümumiyyətlə 3ds Max xaricindəki proqramlara yaxşı sədaqət idxal edə bilərsiniz, xüsusən də burada yaratdığımız qədər həndəsə üçün.

Photoshop CS4 Extended və ya daha sonrakı sürətdə, 3-cü təbəqəni Vanishing Point filtr dialoqundan Photoshop-a qaytarmaq üçün yuxarıdakı 3-cü addımı davam etdirə, sonra 3D & rarr Export 3D Layer deyin.

Qəribədir ki, 3ds Max formatı burada seçimlərinizdən biri deyil. Photoshop-un sizə təqdim etdiklərindən Wavefront OBJ-ni məsləhət görürəm. * .3ds qədər geniş uyğunluq var. Bir çox 3D proqramı hər ikisini, digərləri isə yalnız birini və ya birini açacaqdır.

COLLADA açıq bir standartdır, buna görə nəzəri cəhətdən ən yaxşı seçim olmalıdır, amma idxalçıların həndəsəni tez-tez qarışdırdığını görürəm. * Yenə də * .3ds və * .obj seçimləri uyğun gəlmirsə, sınamaq istəyə bilərsiniz. Sən.

Photoshop ayrıca geniş dəstəklənən, lakin bu cür iş üçün uyğun olmayan STL və DXF-yə də ixrac edə bilər. Bunlar yaradıcı görüntüləmə formatları deyil, real dünya CAD formatlarıdır. Bunları həqiqi divanların istehsalında istifadə edə bilərsiniz.

Bütün digər seçimlər XKCD mənasında "standartlar" dır. Onlardan çəkinin.

İndi bu model sənədini həqiqi bir 3D modelləşdiricidə açmalı və dəqiqləşdirməlisiniz. Tam xüsusiyyətli bir 3D paket, ehtiyacınız varsa, birbaşa UV xəritəsi ilə işləməyinizə imkan verəcəkdir.

Bununla belə, bu saytın əhatə dairəsindən kənarda qalmağımıza səbəb olur. Burada 3D modelləşdirmə mövzusu olsaydı belə, bundan çox irəli getmək üçün, əsasən "3D modelləşdirməni necə edirsən?" Sualına cavab verməli idim. Bu mövzu izah etmək üçün bütün kitabları tələb edir. Səriştəyə yiyələnmək üçün bir neçə aylıq təcrübə və müəyyən bir təcrübə əldə etmək üçün təxminən 10.000 saatlıq fokuslanmış, bacarıq qurma təcrübəsinə ehtiyacınız var. Bu bacarıq kifayət qədər nadirdir, kifayət qədər çətindir və bunu etməklə pul qazana biləcək qədər dəyərlidir.

Ətraflı bir 3D modelə sahib olduqdan sonra istəsəniz onu yenidən Photoshop-a gətirə bilərsiniz. Photoshop olduqca yaxşı bir 3D toxuma boyama vasitəsidir. MARI, 3D-Coat və BodyPaint 3D kimi xüsusi alətlər də mövcuddur. Yüksək səviyyəli 3D paketlər, daha çox ixtisaslaşmış əhatə dairələri içərisində Photoshop-a rəqib olan və ya onu aşan toxuma boyama xüsusiyyətlərini tez-tez ehtiva edir: CINEMA 4D, modo, Blender və s.

Tam Creative Cloud-a abunə olsanız, əvvəllər yalnız Lite olmayan versiyalarda mövcud olan bir xüsusiyyət olan BodyPaint-a sahib olan C4D-nin soyulmuş, lakin olduqca funksional bir versiyası olan CINEMA 4D Lite-ə sahibsiniz. BodyPaint-i yuxarıda göstərdiyimiz kimi modellərdə birbaşa çəkmək üçün hazırlanmış Photoshop-a yalnız bir 3D alternativi kimi düşünə bilərsiniz. Əsas praktik məhdudlaşdırma ondan ibarətdir ki, Layihəniz üçün AE istifadə etməmisinizsə, çox qəliz olan After Effects vasitəsilə istifadə etməlisiniz. Müsbət tərəfi, düz yoxa çıxma nöqtəsi filtrindən AE-yə çatmaqdır:

Bu, CS6 Genişləndirilmiş CS3 və ya Creative Cloud versiyalarından hər hansı birinin genişləndirilməsi deməkdir. Bu texnikanı CS3 Extended və CC 2014-də sınadım.2.

Qatı rəngli nömrəli təyyarələrdən çox, mavi ızgaraları görəcəksiniz. Nümunəni daha aydın göstərmək üçün təyyarələri rənglədim və nömrələdim.

Sarı rəngli üçüncü təyyarəni axtarırsınızsa, kameradan uzaqlaşır. Divanın L şəklinin küncündə dolaşmaq üçün onu düzəltməliydik.

Photoshop-un bütün 3D qabiliyyətli versiyalarında İş yerləri xüsusiyyəti var, lakin əvvəlki versiyalarda bu avtomatik iş rejimi dəyişdirmə işləri aparılmadı. 3D iş sahəsi CS4-ə qədər Photoshop-a əlavə edilmədi. Ayrıca, sizi 3B iş sahəsinə keçirməyi təklif edən versiyalara seçimi xatırlamağınız istənir, buna görə də iş sahəsini istəmədən dəyişdirə bilərsiniz.

Qəti şəkildə desək, bu sizə soruşduğunuz UV xəritəsini vermir, lakin birbaşa model rəsm əksər hallarda həqiqətən istədiyiniz şeydir. Həqiqətən ayrı bir UV xəritə sənədinə ehtiyacınız varsa, yuxarıda göstərildiyi kimi Photoshop-un 3D modelini başqa bir tətbiqə ixrac etməlisiniz.

Photoshop CS3 Extended-də toxuma boyama fərqli işləyir. CS4 birbaşa model üzərində rəngləmə qabiliyyəti əlavə etdi, CS3-də isə hər bir toxumanı ayrı-ayrılıqda açmalı və düzəltməlisiniz. Bu texnika üçün fərq həqiqətən vacib deyil.

Çarpma qarışığı rejimi də bu cür birləşmə üçün yaxşı işləyə bilər. Digər toxumalar və əsas fotoşəkillər tamamilə başqa bir qarışıq rejimi tələb edə bilər.

Yəqin ki, COLLADA-nı böyük 3D proqram istehsalçılarından biri dəstəkləmədiyindən və bununla da standartın real dünyada nə demək olduğunu müəyyənləşdirmək üçün bazar təsirindən məhrumdur. Açıq bir standartdır, buna görə tətbiq edən hər bir şirkətin özünə uyğun gəlməyən bir şey var.


LandInfra (və InfraGML) nəzəriyyə və təcrübədə

LandInfra nisbətən gənc bir standartdır və hazırda LandInfra-dan bəhs edən elmi məqalələrin əksəriyyətinin yalnız gələcək işlərdə nəzərə alınmasının zəruriliyini təsvir edən praktikada istifadəsinə dair hər hansı bir konkret nümunə müəyyənləşdirmək çətindir.

LandInfra ilə ISO 19152 Torpaq İdarəetmə Sahəsi Modeli (LADM) arasındakı əlaqəni müzakirə edən bir çox sənəd var, məsələn baxın [15, 33, 34, 42, 66, 67, 78]. Bu sənədlərdə, CityGML və LandXML kimi digər modellərin yanında InfraGML, 3B kadastr məlumat bazası yaratmaq imkanını açmaq üçün toplanan mövcud 3B məlumatların toplanması ilə əlaqəli olaraq göstərilmişdir.

Xüsusi istifadə hallarında LandInfra'nın inteqrasiyasını müzakirə edən bir neçə sənəd var. Kara et al. [34] əmlak vergiləri üçün qiymətləndirmə məlumat modelini təqdim etmək üçün bir neçə fərqli modelin istifadəsini qiymətləndirdi. Pouliot et al. [68] yeraltı kommunal şəbəkə modelləşdirməsi ilə əlaqəli istifadəçi ehtiyacları ilə üç yerleşim standartları (CityGML UtilityNetwork ADE, InfraGML və IFC) arasında şema uyğunluğu müqayisə edildi. Şema uyğunlaşma texnikalarındakı fərqlərə və bir şemanı digər şemayla müqayisə edərkən müxtəlif səviyyələr və elementlərin sayı arasındakı dəyişməyə əsaslanan ziddiyyətli nəticələrə görə qəti bir nəticəyə gələ bilmədilər. [69] LandInfra-nı, digər 3D məkan məlumat modelləri ilə birlikdə, Avstraliyadakı Viktoriya yurisdiksiyasında müəyyənləşdirilən qanuni maraqları və qanuni sərhədləri modelləşdirmə qabiliyyəti baxımından qiymətləndirdi. IFC-yə əsaslanan fiziki elementlərə istinad etmək üçün LandInfra yanaşmasının fiziki obyektləri Viktoriya modelinə daxil etmək üçün istifadə edilə biləcəyini, lakin son modelləri üçün birdən çox 3D məkan məlumat modellərinin elementlərini birləşdirmələri lazım olduğunu tapdılar. LandInfra ayrıca yeraltı infrastruktur məlumatlarının qarşılıqlı əlaqəsini yaxşılaşdırmaq üçün OGC Yeraltı İnfrastruktur Konsepsiyasının İnkişafı Araşdırması (CDS) tərəfindən yeraltı infrastruktur (kommunal xidmətlər və digər yeraltı xüsusiyyətlər) haqqında məlumatları təmsil etmək üçün potensial standartlardan biri olaraq xatırlanır [65]. LandInfra, əhatə etdiyi ərazidə yaş infrastrukturu və kommunal xidmətləri nəzərə alır [73], CityGML Utility Networks ADE [5] və PipelineML [56] ilə mümkün uyğunlaşmaları işdə vurğulandı [65].

LandInfra və InfraGML-in digər coğrafi standartlarla inteqrasiyasını müzakirə edən bir neçə sənəd var. Bu istiqamətdə komanda tərəfindən əhəmiyyətli işlər görülür Institut Géographique National (IGN) CityGML və InfraGML-in uyğunlaşdırılması üçün Fransa [12, 17]. Araşdırmaları, CityGML və InfraGML arasındakı mövcud məlumatların ilkin mühit akustik tədqiqatları üçün ən uyğun olduğunu müəyyən etmək üçün akustik prosesi və girişləri araşdırdı [12]. Tədqiqat, LandInfra konseptual modelindəki uzantılar üçün elastiklik olmaması və real dünya InfraGML məlumat dəstlərinin praktikada mövcud olmaması kimi bir neçə vacib məqamı da gündəmə gətirdi. Devys [17] RailTopoModel [81] və LandInfra arasındakı dəmir yolu infrastrukturu üçün qarşılıqlı əlaqəni müzakirə etdi və iki model arasında bir xəritəçəkmə təklif etdi. Labetski et al. [39], LandInfra-nın CityGML-in nəqliyyat modulundakı yollar üçün LOD-lərin tərifinin genişləndirilməsi üçün bir çərçivə olaraq istifadə edilməsini təhlil etmiş, lakin LandInfra-da detallar səviyyələri konsepsiyasının olmamasını bunu əhəmiyyətsizləşdirmişdir. [49] ayrıca LandInfra-nı yollar kontekstində təhlil etməyi təklif edir, lakin yol varlıqları üçün mövcud məlumat standartlarında məhdudiyyətləri müəyyənləşdirmək və SW (Semantic Web) texnologiyalarını tətbiq etmək üçün prototip həll yaratmaq üçün təkmilləşdirilmiş standartlara uyğun tövsiyələr yaratmaq üçün yol varlığı məlumatlarının qarışıqlığı. Analizlərini davam etdirərkən [48], bu standartların bir sıra sənaye proqram tətbiqetmələri tərəfindən dəstəkləndiyindən, IFC, IFC Alignment və InfraGML istifadəsinə baxılması lazım olduğunu tapdılar. Başqa bir yol varlığı məlumat standartını inkişaf etdirməyə çalışmaq əvəzinə standartlar arasındakı ünsiyyətə kömək etmək üçün tərcümə yanaşmalarının araşdırılması lazım olduğuna inandıqları ilə nəticələnirlər [48]. Malmkvist et al. [45] InfraGML və IFC Alignment-dən müxtəlif proqram sistemləri daxilində bir yol layihəsinin dizaynı və istismar mərhələləri arasında yol varlığı məlumatlarının məlumat mübadiləsi üçün istifadə etmişdir.


Arxeoloji tədqiqatlar

Arxeoloji araşdırmalar keçmişin üzlərini təsvir etmək, bu qədim insanların necə göründüyünü ictimaiyyətə göstərmək və müasir üzlərlə müqayisə etmək üçün çətin bir üz təhlili imkanları təmin edir (Prag & Neave, 1997). Məhkəmə araşdırmaları ilə müqayisədə fərqli material növləri də təqdim edə bilər və qorunma səviyyəsindən asılı olaraq bədii şərhin miqdarı daha çox ola bilər. Ədli məhkəmə işlərində yalnız səhnə sübutlarından birbaşa müəyyən edilmiş görünüş detallarını daxil etmək və hər hansı bir bilinməyənliyi qiymətləndirməmək üstünlük verilir, çünki yanlış qiymətləndirilmiş detallar tanınma və identifikasiyanı qarışdırır və maneə törədə bilər (Wilkinson, 2004). Bununla birlikdə, arxeoloji araşdırmalarda üzün tanınması nadir hallarda birincil hədəfdir və ən çox ehtimal olunan təsvirin yaradılması fərdi şəxsiyyətdən daha vacib ola bilər. Bu hallarda arxeoloq tarixi mətn və şəkilli dəlillərdən ən ehtimal olunan saç düzümü, saç rəngi, dəri rəngi və göz rəngi təklif edəcəkdir.

Qorunmuş cəsədlərin təsviri

Qədim Misirlilər analiz üçün zəngin bir qaynaq təmin etdilər, çünki mumiyalaşdırma prosesi üzün yumşaq toxumalarını və sümük materialını qoruyur (bəzi dəyişikliklərlə). Klinik görüntülərin inkişafı Qədim Misirlilərin üzlərinin yumşaq və sərt toxumalarının qeyri-invaziv analizinə imkan verdi. Bilgisayarlı tomoqrafiya (CT) tərəfindən yaradılan kəsikli məlumatlar, kəllənin üç ölçülü bir rəqəmsal modelini yaratmaq üçün istifadə edilə bilər (Spoor et al. 2000) və stereolitografi istifadə edərək rəqəmsal məlumatlardan kopiya kəllələri istehsal edilə bilər (Hjalgrim et al. 1995) və ya üç ölçülü model istehsalının başqa bir forması (Seitz və ark. 2005). Kəllənin rəqəmsal 3D modelləri də kompüter əsaslı üz yenidən qurma sistemlərinə idxal edilə bilər. Tut Ankh Amun (Gatliff, 2001 Handwerk, 2005), Nesperrenub (Taylor, 2004) və Janusun (Tukker & Dassen, 1999) üzünün yenidən qurulmasını bu cür işlərin nümunələri göstərmək olar.

Tez-tez mumiyalanmış yumşaq toxumaların qiymətləndirilməsi etibarlılığı artıran və üzün yenidən qurulmasının bədii şərhini azaldan təkcə skeletdən müəyyən edilə bilməyən (şəkil 9A) üz morfologiyasının detallarını aşkar edəcəkdir. Tez-tez qulaqlar qorunacaq və qulaq formasını, ölçüsünü və detalını birbaşa mumiyadan təyin etmək mümkün ola bilər (Taylor, 2004). Eynilə saç xətti və dodaq naxışı görünə bilər, bir çox üz rekonstruksiyasında bədii şərh tələb edən detallar. Büzülmə, təhrif və mumiyalaşdırma prosedurunun təsirləri nəzərə alınmalıdır, çünki bunlar yumşaq toxuma görünüşünə təsir göstərə bilər: bir çox üz cizgiləri bintlər tərəfindən pozulur, burun beyin çıxarılması ilə pozulur və ölümdən sonra gözlər batır dəyişikliklər (Aufderheide, 2003). Məsələn, Misir mumiyalarının böyük əksəriyyəti profildə çəngəl burunlar nümayiş etdirirlər, lakin bu, burunun həqiqi profilindən daha çox sarğı təhrifidir və təcrübəli praktiklər bu fenomeni tanıyacaqlar (Cesarani et al. 2004).

Misir mumiyasının (A) üzünün yenidən qurulması və travmanın təsvir edilməsi (B). 12-ci Xanədanlıq Qədim Misir Rahibi (A) - KT müayinəsi məlumatlarından stereolitoqrafiya ilə hazırlanmış Misir mumiyasının (solda) yumşaq toxumalarının 3-cü kopyası və nəticədə üzün yenidən qurulması (sağda) - Şotlandiya Milli Muzeyinin izni ilə. Bradford Universitetindəki 1996 Towton Battle kolleksiyasından (B) alt çənəsində sağalmış bir qılınc yarası göstərən bir əsgərin üzünün yenidən qurulması. Sağalmış skelet travması sağ tərəfdə, Bradford Universitetinin nəzakəti ilə görülə bilər.

Yumşaq toxumalar torf bataqlığı mühitinin turşuluğu ilə qorunub saxlanıldığı üçün bataqlıqlı cəsədlərin üz görünüşü ilk kəşflərdən bəri böyük maraq doğurur (Asingh & Lynnerup, 2007). Bu, bataqlıqdakı cəsədlərin üzlərinin inanılmaz dərəcədə qorunmasına səbəb ola bilər, baxmayaraq ki, dəfn mühitinin təzyiqi səbəbindən ciddi təhriflər ola bilər. Yumşaq toxumaların təhrif olunduğu yerdə üz cizgilərini və nisbətlərini vizuallaşdırmaq çətin ola bilər və bu vəziyyətdə üzün yenidən qurulması istifadə edilmişdir (Prag & Neave, 1997, Chap. 8, Bergen və ark. 2002). KT görüntüsü kəllə vizualizasiyasına imkan verir, lakin torf bataqlığının asidik şəraiti sümük səthinin pozulmasına səbəb olur və bu, hər hansı bir təhriflə birlikdə üzün yenidən qurulması üçün skelet qiymətləndirməsini çətinləşdirir. Bununla birlikdə, skelet detallarının çatışmazlığı çox böyük miqdarda qorunmuş üz morfologiyası ilə kompensasiya olunur və bataqlıqlı cisimlərin üzünün yenidən qurulması ilk növbədə yumşaq toxuma materialının verdiyi məlumatlardan həyata keçiriləcəkdir (Wilkinson, 2007). Mumiyalarda olduğu kimi qulaqlar da tez-tez qorunacaq və qulaq formasını, ölçüsünü, çıxıntılarını və detallarını birbaşa təyin etmək mümkün ola bilər. Eynilə, vermilyon xətti, saç xətti və üz qırış naxışları görünə bilər, bir çox üz rekonstruksiyasında bədii şərh tələb edən detallar (Wilkinson, 2009). Grauballe Man və Clonycavan Man bu kimi işlərin nümunəsidir (Wilkinson, 2007, 2009). Üz morfologiyası detalları ilə yanaşı, bataqlıqlı cəsədlər saç düzümü, saç rəngi və üz tükləri ilə bağlı əlavə məlumatlar nümayiş etdirirlər (Wilkinson, 2009), yenidənqurma işinin bədii şərhini daha da azaldır və etibarlılığını artırır.

Xəstəlik və travmanın təsviri

Arxeoloji hallar çətin ola bilər, çünki skelet qalıqları müəyyən patoloji hallar, üz deformasiyası və ya üz yaraları göstərə bilər. Bunun aşkar olduğu yerlərdə üzün yenidən qurulması texnikası, tibbi müalicə, qədim xəstəliklər və irsi şərtlərlə əlaqəli üz görünüşünün qurulmasına kömək edən dəyərli bir vasitə ola bilər. Üz travmasının peri-mortem olduğu yerlərdə, yenidən qurulmanın yaranan yaraları nümayiş etdirməsi adətən yersizdir. Yaraların sağalma əlamətləri olduğu yerlərdə yenidənqurma hissəsi kimi yumşaq toxuma yara izlərini nümayiş etdirmək uyğun ola bilər. Üz travması ilə əlaqəli ilk üz rekonstruksiyası hadisəsi, M.Ö. 250 qədim Yunanıstandan olan Philip II Makedon idi (Prag & Neave, 1997), sağ gözdə yaxşı sağalmış bir yara göstərir.

Towton Döyüşündəki bir əsgərin (16 nömrəli) vəziyyətində daha yaxın bir nümunə görülə bilər (şəkil 9B). Onun qalıqları, Bradford Universitetindən (Fiorato et al. 2000) 1996 Towton Battle kolleksiyasının 37 skeletinin bir hissəsidir. Kəllə sol mandibular korpusda yaxşı sağalmış bıçaq zədəsi nümayiş etdirdi. Bıçaq yarası, korpusun dil səthinə nüfuz etmiş, ilk azı çənəsinin ucunu götürmüş və sağ çənə korpusunun daxili səthinə təsir göstərmişdir. Sümüyün çıxarıldığı sol birinci və ikinci azı dişləri arasında boşluq qaldı. Yaranın bütün kənarları yaxşı sağaldı və heç bir infeksiya sübutu göstərmədi. Yenidənqurma əsgərin canlı üz görünüşünü xeyli dəyişdirər və yaranan yara toxuması üzün sol hissəsini əhəmiyyətli dərəcədə pozaraq bu sağalmış yaranı nümayiş etdirərək istehsal edilmişdir. Bundan əlavə, yemək və danışmaqda çətinlik çəkmiş və sol tərəfdəki ağızın bağlanması ilə əlaqədar bəzi problemlər yaşamış, driblinqə və sol ağız küncünün aşağı düşməsinə səbəb ola bilər (Wilkinson & Neave, 2003).

Patoloji vəziyyəti əks etdirən rekonstruksiyalar müasir populyasiyalarla müqayisə üçün faydalı məlumat verə bilər və meningioma hiperostozu və hemangioma olan şəxslərin rekonstruksiyaları istehsal edilmişdir (Wilkinson, 2008). Bu yenidənqurma işləri üzün səthi detalına dair daha ətraflı məlumat verir və bu şəkildə elmi qiymətləndirmənin artırılmasını nəzərdə tutur. Bununla birlikdə, travma və xəstəliklərin təfsiri, elmə əsaslansa da, bədii qiymətləndirmə elementi kimi qəbul edilə bilər.

Səth detalları üçün portretlərin istifadəsi

Bəzən yağ, yaşa bağlı dəyişikliklər, dəri rəngi, göz rəngi, saç düzümü və rəng və üz saçı kimi səth detallarının əlavə edilməsi üçün istinad materialı olaraq istifadə edilə bilən portretlər mövcud ola bilər. Bu vəziyyətdə ortaya çıxan üz rekonstruksiyaları bənzərlik baxımından daha etibarlı hesab edilə bilər. Ümumiyyətlə kəllədən üzə yenidən qurma prosesi portretə kor olaraq həyata keçirilir və daha sonra keçmişin üzünü daha etibarlı təsvir etmək üçün səth detalı əlavə olunur.

Səth detalları üçün portretdən istifadə nümunələri Qədim Misir mumiyalarının əlaqədar portretlərlə üz yenidən qurulmasıdır. Portretlər (Fayuum portretləri) hamısı eramızın I-II əsrlərinə aiddir və enkaustik texnika ilə hazırlanmışdır (Walker, 1997). Bu portretlər saç düzümü, zərgərlik, moda və sosial vəziyyəti təyin etmək üçün Misirşünaslar tərəfindən təhlil edilmişdir. 1000-dən çox mumiya portreti olduğu təxmin edilir, lakin 100-dən azı hələ də mumiyalarına bağlanır. Portretli bir neçə mumiya tədqiq edilmişdir (Wilkinson, 2003b Prag, 2002 Brier & Wilkinson, 2005) və bütün hallarda oxşarlıq qiymətləndirməsindən sonra portretlər yenidənqurma işlərinə əlavə səth detallarını tətbiq etmək üçün istifadə edilmişdir.

Məşhur alman bəstəkarı və orqanisti Johann Sebastian Bachın (1685–1750) kəllə sümüyü üzərində aparılan son tədqiqat, əlavə səth məlumatları üçün Bachın məlum portretinin qiymətləndirilməsini əhatə etmişdir (Hansen, 2008). Baxın ölümündən bir neçə il əvvəl 1746-cı ildə rəssam Elias Gottlob Haussmann üçün oturduğu bilinirdi (Müller, 1935). Haussmann (1695-1774) Drezdendə saray rəssamı, 1720-ci ildən isə Leypsiqdə rəsmi portretçi kimi xidmət etmişdir. Üzün yenidən qurulması, Bachhaus, Eisenach tərəfindən təmin edilmiş Bach kəllə tunc nüsxəsinin lazer taramasından istifadə edərək, 3B kompüterləşdirilmiş bir model olaraq istehsal edilmişdir (şəkil 10). Kəllə böyük bir burun, güclü çənə və dişləməmiş orta yaşlı bir insanı təklif etdi. Yenidənqurma işləri üçün 60-lardakı çağdaş Alman kişilərindən toxuma dərinliyi məlumatları istifadə edildi (Helmer, 1984), lakin üzündəki yağ dərəcəsi birbaşa Haussmann portretindən təsirləndi. Baxın həyatına dair qeydlər, onu şişmiş, ağrılı qapaqlar ilə tərk edən göz problemi yaşadığını və portretdə bu əzabı təsvir etdiyini göstərir (David & Mendel, 1945 Zegers, 2005). Göz detalı, göz rəngi, dəri rəngi və üz qocalma detalları portretdən təyin olundu (şəkil 10). İskelet qiymətləndirmə ilə portret qiymətləndirmənin birləşməsi, mövcud materialla mümkün qədər dəqiq hesab edilə bilən Bachın üz təsvirini təqdim edir (Hansen, 2008).

Johann Sebastian Bach'ın üz yenidən qurulması. Kompüterləşdirilmiş üz yenidən qurulması (A) lazer tarama məlumatlarından kəllənin 3D modelindən istifadə etdi. Yağlılıq dərəcəsi, göz vəziyyəti, dəri rəngi, göz rəngi, saç rəngi və dəri toxumaları (C) ilə əlaqəli istinad materialı olaraq Haussmann 1746 portretini (D) istifadə edərək meydana gələn üzə (B) toxuma əlavə edildi. Bachhaus, Eisenach və Dr Caroline Wilkinson və Janice Aitken, Dundee Universiteti izni ilə.


GENESİZ

Image Cutter proqramının 1.42 versiyası dünən yayımlandı. Buraya Google & # 8217s API v3 istifadəsinə icazə verən bir şablon əlavə etmək daxildir. Google Maps API-nin bu versiyası bir API açarı tələb etmir və iPhone, iPad və Android tablet kimi mobil cihazlarda v2-dən daha yaxşı işləyir.

Ən son versiyanı aşağıdakı linkdən yükləyə bilərsiniz: Image Cutter 1.42

Trackernet: Bütün boru qatarları haradadır?

Bu obsesif hala gəlməyə başlayır, amma London Metrosunda neçə qatarın hərəkət etdiyini və hamısının harada olduğunu merak etməyə kömək edə bilmərəm. TfL tərəfindən buraxılan Trackernet veb xidməti bir xəttdəki stansiyalar üçün işləyən bütün lövhələri görməyə imkan verir, ancaq bütün qatarların harada olduğunu sizə izah etmir. I did an earlier post about just the Victoria line trains, but I’ve now built this into a web service that works out locations for trains on the whole network.

Trains on the London Underground network for 11:30am on 30th November 2011

The map colours follow the normal line colours, so District (Green), Victoria (Light Blue), Central (Red), Northern (Black), Bakerloo (Brown), Jubilee (Grey), Piccadilly (Dark Blue), Waterloo and City (light green). Note that Circle and Hammersmith and City are all shown as yellow and there are no pink markers on the map. This is because the Trackernet API does not distinguish between Circle and Hammersmith and City trains and both lines are queried in one web request, so they’re difficult to separate out.

The idea is to build this into a web service and publish it on MapTube as a real-time Tube map. Using the locations of trains and the time to station information we can build a model of whether a line is running normally and where delays are occurring.

The basic technique behind how the positions are calculated relies on using the time to station information from the running boards at every station on the route to find the minimum time for every unique train. This is then taken as the most accurate location estimate and its position interpolated between the last and next stations based on the time. It is actually a lot harder to work out which line a train is on due to the fact that multiple lines can share platforms at the same station. For example, query the Piccadilly line and the District line and the resulting data will contain Barons Court for both, so you have to separate out the Piccadilly trains and the District trains and make sure you don’t count the same ones twice.

Now that the code can handle the Underground network, the next steps are to do the same for National Rail, London Buses and London River Services.

If you’re interested in live train data, it’s also worth looking at the following site that was created by Matthew Somerville: http://traintimes.org.uk/map/tube

FBX Exporters Part 4

In the previous three parts, I outlined the plan for getting geometry from MapTube via C Sharp into an FBX file using the C++ SDK provided by Autodesk. This final part shows data in a world map exported from MapTube and imported into 3DS Max.

The above image shows the world countries 2010 outline from MapTube. There a few countries missing as there was no data for them in the original dataset, so they show as blank on a MapTube map and their geometry is not exported. This is more visible in the perspective view where you can see the holes in Africa and the Middle East:

The exported geometry will eventually be coloured in the same way as MapTube, but for the moment all the geometry objects have a green material assigned to them.

The final export file can be downloaded from the following link: MyFBXExport

It’s worth pointing out that I’ve had a number of problems with the Quicktime FBX plugin that comes with the Autodesk FBX SDK. It seems to crash every time I close it and when displaying the above file there are some significant problems with how it renders the geometry. Most notably around the Hudson Bay area in Canada, parts of Europe and much of Russia. As it displays fine in Max, I can only assume this is a limitation of the Quicktime FBX renderer. I’ve also had to do some re-scaling of the geometry as it is exported in the Google Mercator projection, using metres. This means that the numbers are too big for Max to handle, so I’ve had to rescale them.

To recap on how this process works, here are the development steps needed to achieve it:

1. A C Sharp program which is a modification of the MapTubeD tile rendering procedure reads the geometry and data from the MapTube server and returns it as an iteration of SqlGeometry objects.

2. Each SqlGeometry object is simplified using the Reduce operation as we don’t need the full level of detail in the output FBX file.

3. The C Sharp program uses native methods in a C++ DLL, which I’ve written to control the operation of the FBX exporter in Autodesk’s SDK. A handle to the FBX document and scene that we want to create is obtained and then a native “AddGeometry” function is used on every geometry object until a final “WriteFile” function is called. The geometry is passed using the OGC well known binary format which is an efficient way of passing large blocks of complex geometry and is also independent of byte ordering.

The DLL which does the actual export is a 32 bit program with functions exported using C names rather than decorated C++ names to make it easy to link to the C Sharp function stubs. Internally, I’m using the GEOS library to parse the well known binary geometry, extract polygons and write the points to the FBX scene hierarchy.

That’s the proof of concept to demonstrate that this method works. The aim now is to see what we can do with geographic data now that we have the ability to load it into art tools like Max and Maya, game engines like Unity, or frameworks like XNA.

FBX Exporters Part 3

The first two parts of the FBX export process dealt with getting the FBX SDK working and exporting some simple geometry. Now what’s required is the ability to pass complex geometry from the MapTube side using C# over to the FBX side using C++. The obvious way to do this is to pass the geometry in the OGC well known binary format (WKB), so I’ve been looking at GEOS which is a C++ port of the Java Topology Suite (JTS). I’ve managed to use this in conjunction with the FBX exporter to create simple geometry from WKT which I’ve loaded into 3DS Max.

One of the problems I had was building a debug version of GEOS version 3.3.1 as the instructions aren’t quite right. The make command for a debug build is:

nmake /f makefile.vc BUILD_DEBUG=YES

As I’m using Visual Studio 2008, I had to run “autogen.bat” first to create the required header files, and also make sure I do a clean between the release build and the debug build. Once this library was built successfully, I could use the WKT reader to read in some test geometry and build an FBX exporter around it.

[c language=”++”]
string version = geos::geom::geosversion()
cout<<version
//geom::Geometry* geos::io::WKBReader::read ( std::istream & is )
std::string poly("POLYGON ((30 10 0, 10 20 10, 20 40 20, 40 40 30, 30 10 0))")
cout<<poly<<endl
WKTReader* reader = new WKTReader()
Geometry* geom = reader->read(poly)
delete reader
[/c]

The entire FBX exporter is too big to replicate here, but the part that extracts the geometry from the GEOS geometry object and creates the FBX control points is as follows:

[c language=”++”]
//create control points
int NumPoints = geom->getNumPoints()
lMesh->InitControlPoints(NumPoints)
KFbxVector4* lControlPoints = lMesh->GetControlPoints()
CoordinateSequence* coords = geom->getCoordinates()
for (int i=0 i<NumPoints i++)
<
lControlPoints[i]=KFbxVector4(coords->getOrdinate(i,0), coords->getOrdinate(i,1), coords->getOrdinate(i,2) )
cout<<coords->getOrdinate(i,0)<<","<<coords->getOrdinate(i,1)<<","<<coords->getOrdinate(i,2)<<endl
>
[/c]

The only other thing I’ve done is to create a material for the polygon so it shows up as red in 3DS Max.

Now I’ve demonstrated that all the component parts work, the final stage of getting geometry from MapTube into 3DS Max will be to write a C++ library on top of the FBX exporter and GEOS which can be used as a native library from C#.

FBX Exporters Part 2

In the first FBX exporter post I got to the point where the export of simple geometry from one of the Autodesk SDK examples could be loaded by the Quicktime plugin. This used the SDK as a multithreaded statically linked library which I used with one of the examples to create a plane object. The following image shows a more complicated file containing a marker (red), custom geometry in the form of a cube (grey) and a camera (looks like a camera).

The code to get to this point is rather complicated, but I copied the UI Examples CubeCreator example program supplied with the SDK which showed how to set up the cube mesh with all the correct normals and textures.

The scene graph is set up with a camera, marker and mesh as follows:

[c language=”++”]
// build a minimum scene graph
KFbxNode* lRootNode = pScene->GetRootNode()
lRootNode->AddChild(lMarker)
lRootNode->AddChild(lCamera)
// Add the mesh node to the root node in the scene.
lRootNode->AddChild(lMeshNode)
[/c]

The creation of the mesh object prior to this is a lot more complicated:

[c language=”++”]
// Define the eight corners of the cube.
// The cube spans from
// -5 to 5 along the X axis
// 0 to 10 along the Y axis
// -5 to 5 along the Z axis
KFbxVector4 lControlPoint0(-5, 0, 5)
KFbxVector4 lControlPoint1(5, 0, 5)
KFbxVector4 lControlPoint2(5, 10, 5)
KFbxVector4 lControlPoint3(-5, 10, 5)
KFbxVector4 lControlPoint4(-5, 0, -5)
KFbxVector4 lControlPoint5(5, 0, -5)
KFbxVector4 lControlPoint6(5, 10, -5)
KFbxVector4 lControlPoint7(-5, 10, -5)

KFbxVector4 lNormalXPos(1, 0, 0)
KFbxVector4 lNormalXNeg(-1, 0, 0)
KFbxVector4 lNormalYPos(0, 1, 0)
KFbxVector4 lNormalYNeg(0, -1, 0)
KFbxVector4 lNormalZPos(0, 0, 1)
KFbxVector4 lNormalZNeg(0, 0, -1)

// Initialize the control point array of the mesh.
lMesh->InitControlPoints(24)
KFbxVector4* lControlPoints = lMesh->GetControlPoints()
// Define each face of the cube.
// Face 1
lControlPoints[0] = lControlPoint0
lControlPoints[1] = lControlPoint1
lControlPoints[2] = lControlPoint2
lControlPoints[3] = lControlPoint3
// Face 2
lControlPoints[4] = lControlPoint1
lControlPoints[5] = lControlPoint5
lControlPoints[6] = lControlPoint6
lControlPoints[7] = lControlPoint2
// Face 3
lControlPoints[8] = lControlPoint5
lControlPoints[9] = lControlPoint4
lControlPoints[10] = lControlPoint7
lControlPoints[11] = lControlPoint6
// Face 4
lControlPoints[12] = lControlPoint4
lControlPoints[13] = lControlPoint0
lControlPoints[14] = lControlPoint3
lControlPoints[15] = lControlPoint7
// Face 5
lControlPoints[16] = lControlPoint3
lControlPoints[17] = lControlPoint2
lControlPoints[18] = lControlPoint6
lControlPoints[19] = lControlPoint7
// Face 6
lControlPoints[20] = lControlPoint1
lControlPoints[21] = lControlPoint0
lControlPoints[22] = lControlPoint4
lControlPoints[23] = lControlPoint5

// We want to have one normal for each vertex (or control point),
// so we set the mapping mode to eBY_CONTROL_POINT.
KFbxGeometryElementNormal* lGeometryElementNormal= lMesh->CreateElementNormal()

// Set the normal values for every control point.
lGeometryElementNormal->SetReferenceMode(KFbxGeometryElement::eDIRECT)

lGeometryElementNormal->GetDirectArray().Add(lNormalZPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalZPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalZPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalZPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalXPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalXPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalXPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalXPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalZNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalXNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalYPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalYPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalYPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalYPos)
lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg)
lGeometryElementNormal->GetDirectArray().Add(lNormalYNeg)

// Array of polygon vertices.
int lPolygonVertices[] = < 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23 >

// Create UV for Diffuse channel.
KFbxGeometryElementUV* lUVDiffuseElement = lMesh->CreateElementUV( "DiffuseUV")
K_ASSERT( lUVDiffuseElement != NULL)
lUVDiffuseElement->SetMappingMode(KFbxGeometryElement::eBY_POLYGON_VERTEX)
lUVDiffuseElement->SetReferenceMode(KFbxGeometryElement::eINDEX_TO_DIRECT)

KFbxVector2 lVectors0(0, 0)
KFbxVector2 lVectors1(1, 0)
KFbxVector2 lVectors2(1, 1)
KFbxVector2 lVectors3(0, 1)

lUVDiffuseElement->GetDirectArray().Add(lVectors0)
lUVDiffuseElement->GetDirectArray().Add(lVectors1)
lUVDiffuseElement->GetDirectArray().Add(lVectors2)
lUVDiffuseElement->GetDirectArray().Add(lVectors3)

//Now we have set the UVs as eINDEX_TO_DIRECT reference and in eBY_POLYGON_VERTEX mapping mode
//we must update the size of the index array.
lUVDiffuseElement->GetIndexArray().SetCount(24)

// Create polygons. Assign texture and texture UV indices.
for(int i = 0 i < 6 i++)
<
// all faces of the cube have the same texture
lMesh->BeginPolygon(-1, -1, -1, false)

for(int j = 0 j < 4 j++)
<
// Control point index
lMesh->AddPolygon(lPolygonVertices[i*4 + j])

// update the index array of the UVs that map the texture to the face
lUVDiffuseElement->GetIndexArray().SetAt(i*4+j, j)
>

So, we have to define the vertices (control points in the language of the SDK), normals and UV coordinates for the mesh to show in the Quicktime viewer. It’s also worth mentioning that I’ve had to force the output FBX file from the exporter to be in binary format as the viewer refuses to load the ASCII format FBX. In addition to this, I’m still getting application crashes when I close the Quicktime viewer.

Now I have the ability to create custom geometry, the next step is to write an interface to allow me to pass geographic data to the exporter via C#. After giving this some thought, the obvious solution is to pass well-known binary (WKB) from the C# program to the C++ library as a block of bytes. This is a relatively easy format to produce and decode into geometry, so shouldn’t take long to write.

Part three will deal with the mechanics of getting actual geometry to the exporter and generating an FBX file from real geographic data.

Exporting Geographic Data in FBX Files

I’ve been looking at how to export the geographic information contained in a MapTube map into an art tool like 3DS Max or Maya. The reason for this is firstly to make it easier to produce high quality geographic presentations, but also, by employing a recognised art tool chain, we can also get the data into 3D visualisation systems built around XNA (XBox) or Unity.

Originally, I was going to implement a 3DS exporter as this is a well-used format that would allow geometry to be imported by Google Sketchup, Blender, or a long list of professional art tools. After coming across Autodesk’s FBX SDK, I decided to create an FBX exporter instead. Although this is a format that can’t be loaded by either Sketchup or Blender, the SDK is quite flexible and can also export Collada (DAE) and Wavefront OBJ files which the free tools can import. In addition to this, it can be imported by both Unity and XNA.

Autodesk supply a viewer plugin for Quicktime, but I had some problems getting this to work with my first export attempts. The example below shows a simple screenshot:

Although a flat black plane on a grey background isn’t fantastic for a first attempt, it took a while to get this far as the examples don’t tell you that the Quicktime viewer doesn’t like ASCII format FBX files and you have to change the example format to BINARY.

[c language=”++”]
//altered export from ASCII to Binary
int lFormatIndex, lFormatCount = pSdkManager->GetIOPluginRegistry()->GetWriterFormatCount()

for (lFormatIndex=0 lFormatIndex<lFormatCount lFormatIndex++)
<
if (pSdkManager->GetIOPluginRegistry()->WriterIsFBX(lFormatIndex))
<
KString lDesc =pSdkManager->GetIOPluginRegistry()->GetWriterFormatDescription(lFormatIndex)
printf("%s ",lDesc.Buffer()) //print out format strings
//char *lASCII = "ascii"
char *lBinary = "binary"
if (lDesc.Find(/*lASCII*/lBinary)>=0)
<
pFileFormat = lFormatIndex
break
>
>
>
[/c]

This is a copy of the “ExportDocument” example that comes with the SDK, but with the type changed to binary to allow it to load.

The next problem is learning how to create my own geometry and figuring out a way of connecting the native C++ library to the managed C# code used by MapTube. My initial thought was to create a managed wrapper for the FBX SDK and use marshalling, but, on further examination of the SDK, it’s much too complicated to do in any reasonable amount of time. So, plan B is to write the code to do the export as a native C++ process, expose enough methods to allow this to be controlled through marshalling and interop via the C# code and do the FBX export through that route. This only depends on being able to marshall the large amount of geometry data, but this should be possible to work out.

After these first experiments, it’s looking like the pattern will be something like a reader/writer object with a choice of export formats as FBX, Collada or OBJ to allow the assets to be loaded into as many art packages as possible.

The next post will cover the generation of the geometry and its export to FBX.

Trackernet: The Victoria Line

I’ve been meaning to look at TfL’s Trackernet API for a while now. It works through a REST based web service which gives access to all the London Underground running boards on a line by line basis. You issue an http request of the form:

and the result is an XML file containing train information for every station on the Victoria Line. Substitute “B” instead of “V” and you get the Bakerloo line instead. I had managed to figure out a way to get approximate train locations when the Victoria Line got suspended one morning, so I couldn’t resist looking to see where all the trains had ended up:

According to my data, there are 25 trains on the line. The way the positions are calculated is quite complicated as the original information comes from the running boards for every station and the time to platform estimates. Trains are uniquely identified through a train number and a set number as a composite key. I simply iterate through all the data for every station and take the lowest time to station for every train, which gives me the train’s next station. Then I use the location code provided by the API and the time to station estimate to interpolate between the last station and the next station.

One feature worth noting is that because the time to station is given for every station along the train’s whole route, you can use the data to build up a dataset of the time required to travel between any pair of stations. Also, because the information is processed from the running boards, the program should be able to process National Rail train locations from the information on their website.

By using only the information provided in the XML response from the API means that I am able to construct a web service that doesn’t require any state information to be retained between calls. In addition to this, it doesn’t require any knowledge of the tube network and how the stations are connected together.

This is still very much a prototype, but once it’s working for all the lines, it will be released as a real-time feed on MapTube.

Twitter Maps and #ukriots

With all the media hype surrounding the use of social networking and the London riots, it left me wondering what was actually being said on Twitter in the UK. It was also a good opportunity to test out the new MapTube map creation software which can handle 35,000 clickable points on a map with ease (we tested with 500,000). So, the aim was to create a map of UK tweets which I could explore around the areas where the riots were happening to see what people were saying about them on Twitter.

In order to do this, I used the Twitter client that Steven Gray wrote to collect geocoded tweets from Twitter. This has been used for things like the real-time heatmap of London 2012 #1yeartogo tweets: http://bigdatatoolkit.org/

The resulting map can be seen below:

Tweets captured from Twitter between 15:00 and 22:00 on Tuesday 9th August 2011. See text for further details.

Once the data had been collected as a CSV file containing “UserId”, “Time”, “Tweet”, “lat” and “lon”, the processing was done using Excel. This will feature as a separate blog post in more detail, but I created columns of riot related hashtags and cleanup related hashtags. Then these were combined into a colour code based on whether the tweet is a general tweet (Blue), contained a riot tag (red), contained a cleanup tag (green) or both riot and cleanup tags (yellow).

There are full details in the “more information” link on the live map, but I collected 34,314 geocoded tweets in the period, of which 1,330 contained riot hashtags and 87 contained cleanup hashtags.

What’s interesting about this map is that I was expecting more tweeting about the riots. 13,330 is less than 4% of all geocoded tweets.

Where this map really comes into its own is the ability to click on messages around the riot areas and see what people are saying. I think what this highlights is that you need some sort of natural language processing as there is obviously a lot of discussion about the riots not using hash tags. People are tweeting that they or their children are scared as it sounds really close, or tweeting to people to tell them they have arrived home safely.

The other interesting thing for natural language processing researchers is that Twitter has a language all of its own. When you start reading some of the tweets it’s obvious that the contractions and slang that is being used will be a challenge to understand.

One thing I need to fix in MapTube is that it returns too much information on the popup when you click on a location. The point and click functionality returns all points covering the area of your click. If you are zoomed out a long way, then this can be hundreds of points on the speech bubble popup which causes the client browser a number of problems. I think limiting to around 20 returned points would be a safer option.

Making Maps From Wikipedia

I’ve been looking at web-based sources of geographic data and Wikipedia links are something I’ve wanted to try out for a while. I found the following page containing Worldwide fossil sites:

This gives a list of sites, but with no locations:

The “Site” column contains href links which can be followed to pages like the following:

The coordinates can just be made out in the top right hand corner of the page.

As all Wikipedia pages follow a common theme, the coodinates are embedded in a <span> tag with I already had a Java program for loading a web page and converting it into xhtml, so I used this to turn the original list page into a csv file by extracting the data out of the html tables. One of the columns in this file contained the links to the site-specific pages, so another program was written to follow all these links and extract the location from the site page.

While the general technique works, only about 25% of the data had links to pages with lat/lon coordinates, so the final map is somewhat incomplete, but this can be edited manually. The map itself was built using MapTube’s new map creation system which works using the CSV file of data. The final map can be viewed at the following link:

New MapTube Map Creation Feature

We released a new feature on the MapTube website today which will make it easier to create new maps from data in CSV files. The underlying technology is used on the SurveyMapper site and for other real-time visualisations like http://bigdatatoolkit.org/2011/07/26/1yeartogo/ which shows tweets using the #1yeartogo hashtag for the London 2012 Olympics.

Creating a map of abandoned vehicles from the London Datastore using MapTube

The new update to MapTube adds a graphical user interface which allows the user to upload a data file, choose a colour scale and publish the map on MapTube directly. One of the driving forces behind this was the idea that creating a map should be simple enough that you could do it using an iPad. Data on the London Datastore is in the correct format, so you can copy the CSV link directly from the site, which is exactly what has been done in the above image. I’ve created a YouTube clip showing the whole process, which can be viewed at the following link:

This feature is still experimental, but at the m0ment it handles point data in lat/lon coordinates (WGS84) or OS coordinates for the UK (OSGB36). Point data can be drawn using markers, or as a heatmap showing point density. For area data, one column in the data is selected as a key field and this is joined with the geographic data stored in MapTube’s database to draw the map. For example, using the following data:

We have four columns: Constituency, Party, PartyCode and Change. In the CSV file the first line must be the column headings, then every subsequent line contains data. The CSV file would contain the following:

The “Constituency” column is the area key in this case, but MapTube determines this automatically when the CSV file is loaded, along with the type of geography, which is Parliamentary Constituencies. In order to colour the map, numeric data is required, so in this example, a column labelled “PartyCode” has been added where “LAB”=1, “”CON”=2, LD=𔄥” etc.

The colour scale is then chosen and the finished map submitted to MapTube where it can be viewed along with any of the other maps. There are help pages accessible through the ‘i’ icon on each section which contain further information.

As mentioned before, this feature is still experimental and we will be gradually adding more geographic data to the MapTube database to allow maps to be built from additional geographies. The aim is for MapTube to be able to automatically detect the geography just by analysing the data and, at the moment, the following geographies can be used:

US States and Zip code areas will be added shortly, along with adminsitrative and Census boundaries for other parts of the World.


Browse Books

In the 1990s, a new type of learning algorithm was developed, based on results from statistical learning theory: the Support Vector Machine (SVM). This gave rise to a new class of theoretically elegant learning machines that use a central concept of SVMs -kernels--for a number of learning tasks. Kernel machines provide a modular framework that can be adapted to different tasks and domains by the choice of the kernel function and the base algorithm. They are replacing neural networks in a variety of fields, including engineering, information retrieval, and bioinformatics.

Learning with Kernels provides an introduction to SVMs and related kernel methods. Although the book begins with the basics, it also includes the latest research. It provides all of the concepts necessary to enable a reader equipped with some basic mathematical knowledge to enter the world of machine learning using theoretically well-founded yet easy-to-use kernel algorithms and to understand and apply the powerful algorithms that have been developed over the last few years.


Author Profile Pages

  1. Təsvir: The Author Profile Page initially collects all the professional information known about authors from the publications record as known by the ACM bibliographic database, the Guide. Coverage of ACM publications is comprehensive from the 1950's. Coverage of other publishers generally starts in the mid 1980's. The Author Profile Page supplies a quick snapshot of an author's contribution to the field and some rudimentary measures of influence upon it. Over time, the contents of the Author Profile page may expand at the direction of the community.
    Please see the following 2007 Turing Award winners' profiles as examples:
  2. History: Disambiguation of author names is of course required for precise identification of all the works, and only those works, by a unique individual. Of equal importance to ACM, author name normalization is also one critical prerequisite to building accurate citation and download statistics. For the past several years, ACM has worked to normalize author names, expand reference capture, and gather detailed usage statistics, all intended to provide the community with a robust set of publication metrics. The Author Profile Pages reveal the first result of these efforts.
  3. Normalization: ACM uses normalization algorithms to weigh several types of evidence for merging and splitting names.
    Bunlara daxildir:
    • co-authors: if we have two names and cannot disambiguate them based on name alone, then we see if they have a co-author in common. If so, this weighs towards the two names being the same person.
    • affiliations: names in common with same affiliation weighs toward the two names being the same person.
    • publication title: names in common whose works are published in same journal weighs toward the two names being the same person.
    • keywords: names in common whose works address the same subject matter as determined from title and keywords, weigh toward being the same person.

The more conservative the merging algorithms, the more bits of evidence are required before a merge is made, resulting in greater precision but lower recall of works for a given Author Profile. Many bibliographic records have only author initials. Many names lack affiliations. With very common family names, typical in Asia, more liberal algorithms result in mistaken merges.

Automatic normalization of author names is not exact. Hence it is clear that manual intervention based on human knowledge is required to perfect algorithmic results. ACM is meeting this challenge, continuing to work to improve the automated merges by tweaking the weighting of the evidence in light of experience.

ACM will expand this edit facility to accommodate more types of data and facilitate ease of community participation with appropriate safeguards. In particular, authors or members of the community will be able to indicate works in their profile that do not belong there and merge others that do belong but are currently missing.

A direct search interface for Author Profiles will be built.

An institutional view of works emerging from their faculty and researchers will be provided along with a relevant set of metrics.

It is possible, too, that the Author Profile page may evolve to allow interested authors to upload unpublished professional materials to an area available for search and free educational use, but distinct from the ACM Digital Library proper. It is hard to predict what shape such an area for user-generated content may take, but it carries interesting potential for input from the community.


Buildings missing texture in 3d web scene exported from ArcScene - Geographic Information Systems

Behind the Scenes: Floating Cottage

New Edge Scrolling for Node Editor

Behind the Scenes: The Gate

The Best Blender Art on Sketchfab: 2021, week 26

New Chapter of Scripting for Artists Released

Community News


Videoya baxın: DAM Design Using GIS ESRI ArcScene Animation 3D View