Daha çox

Bitişik çoxbucaqlıları birləşdirin və hamısını (bitişik və bitişik olmayan) Multipoliqon kimi qaytarsın?


Məndə inzibati sərhədlər və həndəsə ilə postgres verilənlər bazası var. Bu sərhədlərin hər birinin eyniləşdirmə nömrəsi var.

Nəyə nail olmaq istəyirəm:

Əvvəlcə müəyyən bir poçt kodu ilə başlayan bütün satırları seçmək istəyirəm. Misal üçün:

SEÇ * SEÇİN "yazı" HARADA "yazı". "İdent" LİKE '101%'

Bitişik olan bütün Həndəsələr birləşdirilməli və verilməyənlər də geri qaytarılmalıdır.

Bu ifadələri sınadım:

Bu cavabdan məndə var:

PostGIS istifadə edərək daha çox poliqon yaratmaq üçün bir çox kiçik poliqonlara qoşulmaq?

ilə t as (seçin (st_dump (geom)). "post" dan geom harada "post". "ident" LIKE '593%') t-dən ST_UNION (geom) seçin;

Ancaq bu ifadə yalnız bitişik, lakin digərləri daxil olmayan çoxbucaqlıları qaytarır

ilə t as (seçin (st_dump (geom)). "post" dan geom harada "post". "ident" LIKE '593%') seçin ((ST_Dump (ST_UNION (geom)))) t;

2 satır alıram və görünür ki, bu mənim istədiyim ola bilər, amma nəticəni ala bilmirəm ST_AsText.

Zəruri hallarda birləşdirilmiş bütün poliqonları qaytaran və ideal olaraq geoJSON və ya bəlkə də mətn olaraq qaytaran bir bəyanat varmı?


OP-nin cavabı:

t ilə (seçin (st_dump (geom)). "post" dan geom olduğu yerdə "post". "ident" LIKE '593%') ST_AsGeoJSON seçin ((ST_Dump (ST_UNION (geom))). geom) t;

Beləliklə həndəsələrə daxil ola və geoJSON-a çevirə bilərsiniz. Bitişik həndəsələr birləşdirilir və birləşdirilmiş çoxbucağa daxil olmayan bütün həndəsələri əldə edirsiniz.


Bir operatorun spektri və çözünürlüğü

Beləliklə $ A: l_2 ( Bbb C) - l_2 ( Bbb C) $ operatoru üçün aşağıdakı kimi müəyyən edilmişdir:

Bağlı operatoru $ A ^ * $ a baxaraq tapa bilərik:

$ langle Ax, y rangle = sum_^ m x_i overline_i = cəm_^ uyğun x_i A ^ * ( overline) _i $

$ A ^ * ( overline işarəsini verir) _i = ( overline y_1, overline y_2, cdots, overline y_m, 0, cdots) $

Beləliklə: $ langle Ax, y rangle = sum_^ m x_i overline_i = cəm_^ uyğun x_i A ^ * ( overline) _i = cəm_^ m x_i overline y_i = langle x, A ^ * y rangle $

İndi $ A $ spektrini və $ A $ həllini necə tapa bilərəm?


Bitişik çoxbucaqlıları birləşdirin və hamısını (bitişik və bitişik olmayan) Multipoliqon kimi qaytarsın? - Coğrafi İnformasiya Sistemləri

MDPI tərəfindən nəşr olunan bütün məqalələr açıq giriş lisenziyası altında dərhal dünya miqyasında təqdim olunur. Rəqəmlər və cədvəllər daxil olmaqla MDPI tərəfindən dərc olunmuş məqalənin hamısını və ya bir hissəsini yenidən istifadə etmək üçün xüsusi icazə tələb olunmur. Açıq girişli Creative Common CC BY lisenziyası ilə nəşr olunan məqalələr üçün orijinal məqalənin açıq şəkildə göstərilməsi şərtilə məqalənin istənilən hissəsi icazəsiz yenidən istifadə edilə bilər.

Xüsusiyyət sənədləri, sahədəki yüksək təsir üçün əhəmiyyətli potensiala sahib olan ən inkişaf etmiş tədqiqatları təmsil edir. Bədii sənədlər elmi redaktorların fərdi dəvəti və ya tövsiyəsi ilə təqdim olunur və dərc olunmadan əvvəl həmyaşıdlar tərəfindən nəzərdən keçirilir.

Xüsusiyyət Kağızı ya orijinal bir araşdırma məqaləsi, ya da tez-tez bir neçə texnika və ya yanaşmanı ehtiva edən əhəmiyyətli bir yeni tədqiqat işi və ya bu sahədəki son inkişafa dair qısa və dəqiq yenilikləri əks etdirən hərtərəfli bir araşdırma sənədi ola bilər. ədəbiyyat. Bu tip kağızlar tədqiqatların gələcək istiqamətləri və ya mümkün tətbiqetmələr haqqında fikir verir.

Editor’s Choice məqalələri dünyanın hər yerindən MDPI jurnallarının elmi redaktorlarının tövsiyələrinə əsaslanır. Redaktorlar, bu yaxınlarda jurnalda dərc olunan müəlliflər üçün xüsusilə maraqlı olacağına və ya bu sahədə əhəmiyyətli olacağına inandıqları az sayda məqalə seçirlər. Məqsəd, jurnalın müxtəlif tədqiqat sahələrində dərc olunmuş ən həyəcan verici əsərlərin bir hissəsini təqdim etməkdir.


Üst-üstə düşən düzbucaqlıların birləşməsi alqoritmi

Kodun bir hissəsi ekranın yenidən çəkilməsini tələb edə biləcək bölgələrini təmsil edən düzbucaqlı kolleksiyaların istehsalını əhatə edir. Bunlar daha sonra hündürlüyü 1 olan düzbucaqlıların "dilimlərinə" doğranılır. Bundan sonra üst-üstə düşən düzbucaqlılar birləşdirilərək üst-üstə düşməyən düzbucaqlıların son dəsti yaranır. Kod daha sonra müştəri son dəfə yeniləndiyindən bu bölgələrin hansı hissələrinin dəyişdiyini və son məqsəd müştəriyə ümumiyyətlə şəbəkə üzərində olan ən az miqdarda protokol kodu istehsal etmək olduğunu yoxlamaq üçün davam edir, ekranını yenidən çəkmək üçün.

Profil verildikdən sonra orada bir darboğaz aşkarladıqdan sonra, bu yaxınlarda kodun düzbucaqlıları birləşdirən hissəsinə hücum etdim, çünki bütün komponentlərin tam ekran yenidən çəkilməsi yuxarıdakı "dilimlərdən" bir neçə minini yarada bilər (çox xoşbəxtliklə 24-ə qədər birləşir). ). Köhnə alqoritm, sıra içindəki hər bir elementi digər elementlərlə sadəlövhcəsinə yoxlayaraq onu kvadratik hala gətirdi, halbuki yeni alqoritmim təxminən xətti görünür.

Alqoritmin mərkəzində isə düzbucaqlıların birləşdirilməsi üçün üç xüsusi hal var. Bunların bir budaqsız ifadəyə ümumiləşdirilə biləcəyinə demək olar ki, əminəm, amma bu məndən yayınır. Bu istiqamətdəki göstəriciləri və ya ümumiyyətlə alqoritmin digər tənqidlərini qiymətləndirərdim.

(Qırağa: müqayisə_ dilim əmrləri düzbucaqlının mənşəli Y koordinatına, sonra X koordinatına görə.)


1.2 Obyekt-Əlaqəli Model

Mekansal dəstəkləyir obyekt-münasibət həndəsələri təmsil etmək üçün model. Obyekt-münasibət modeli, tək bir SDO_GEOMETRY sütunu və bir həndəsə nümunəsi üçün bir sətir olan bir cədvəl istifadə edir. Obyekt-münasibət modeli, yerleşim xüsusiyyətləri üçün Açıq GIS ODBC / SQL spesifikasiyasında məkan xüsusiyyət cədvəllərinin "Həndəsə növləri ilə SQL" tətbiqinə cavab verir.

Obyekt-münasibət modeli tərəfindən verilən üstünlüklərə aşağıdakılar daxildir:

Tağlar, dairələr, qarışıq çoxbucaqlar, qarışıq xətt simləri və optimallaşdırılmış düzbucaqlılar da daxil olmaqla bir çox həndəsə növünə dəstək

İndekslərin yaradılması və saxlanmasında və məkan sorğularının yerinə yetirilməsində istifadə rahatlığı

Oracle verilənlər bazası tərəfindən indeks baxım

Tək sətirdə və tək sütunda modelləşdirilmiş həndəsələr


Çözümün mümkün yolu.

Birincisi, aşağıdakılar var:

Bundan sonra $ ab = 1 $ (və $ a ^ 3b ^ 3 = 1 $) olan bir neçə yerdə istifadə edirəm.

İndi bu $ S_n $ -ın $ leq 5 $ əmrinin təkrarlanan bir ardıcıllığı olduğunu göstərir. Təkrarlanmanın polinomu $ U (x) = (x-1) (xa) (xa ^ 2) (xb) (xb ^ 2) $ (və ya $ w_0 $ əmsalı olduğu təqdirdə bu polinomun bölücüdür) sıfır, bu halda $ (x-1) $ faktoru faktorlaşdırmada görünmür) və onun əmsalları $ mathbb$ və $ S_n $ -ın $ mathbb-də olduğunu göstərmək üçün$ yalnız $ S_n $ yəni $ S_0, S_1, S_2, S_3, S_4 $ bir neçə ilk dəyərini hesablamağı tələb edir.

Əlbəttə ki, yuxarıda səhvlər olmadığı təqdirdə sübutu bitirmək üçün elə də xoş olmayan hesablamalar var.


Məkan bilikləri

Robert Laurini, Derek Thompson, Məkan İnformasiya Sistemlərinin Əsasları, 1992

YENİ XƏSTƏXANA YERİNİN NÜMUNƏSİ

Bu ikinci nümunədə əvvəlcə Bölmə 2.4-də müzakirə edildiyi kimi yer ayırma kimi tanınan yer problemləri kateqoriyasına baxırıq. Yeni bir xəstəxana üçün qənaətbəxş bir yerə qərar vermək üçün xüsusi bir vəziyyət üçün (Şəkil 17.24) belə məlumatlar var:

Şəkil 17.24. Yeni bir xəstəxana yeri üçün lazımlı məlumatlar.

Xəstəxanalara potensial tələb, zonalara yığılan və bölgələrin santroidlərinə təyin edilmiş insanların sayı ilə ölçülür:

R1 (Zona-ID, Əhali, X_zone, Y_zone)

Xəstəxananın saytına namizəd olan bəzi yerlərin yeri. Alternativ yerlər ərazinin mövcudluğu, torpaq alışı və inkişaf etdirmə xərcləri, qonşuluq xarakteri və qonşuluqda mövcud şəraitlə xarakterizə olunur:

R2 (Site-ID, X_site, Y_site, (Xüsusiyyətlər) *)

Həm kilometrlik, həm də müvəqqəti məsafə kimi ölçülən zonalardan saytlara giriş imkanı:

R3 (Site-ID, Zona-ID, Km_distance)

R4 (Sayt identifikatoru, Zona identifikatoru, Saat məsafəsi)

Bununla birlikdə, xəstəxananın qarşılanmadığı və ya yaxşı yerləşmədiyi və ya yerli bina və ya bölgə qaydaları ilə qadağan olunduğu bəzi yerlər var, bəlkə də bu ərazilərlə əlaqəli səs-küy səbəbindən bir yanğın stansiyasına və ya fabrikə yaxın olmamaq üçün. istifadə edin. Üstəlik, bu maneələr dərəcə və ya səriştəsizlik səviyyəsi ilə qiymətləndirilə bilər:

R5 (Hindrance-ID, X_hinder, Y_hinder, Hindrance_type, Hindrance_degree)

Bu biliklərdən başlayaraq, ənənəvi olaraq və əməliyyatların araşdırılması üsullarına əsaslanaraq həllinə bənzər bir məkan mühakiməsi növü həyata keçirdiyini təsəvvür edin. Bəlkə də bu əsaslandırıcı yanaşmanın ən vacib tərəfi, təsiri fərqli namizəd saytlarına fərqli arzuolunma dəyərləri verəcək bir neçə çəki funksiyasının seçilməsidir. Düşüncə addımları aşağıdakılardan ibarətdir:

Əhali zonaları üçün fərdi məsafələr üzərində qurulmuş əlçatan potensial indeksini yaratmaq üçün ilkin çəki funksiyası seçilməlidir:

A1 (Sayt Kimliği, Erişilebilirlik_ Potensial_index)

Maneələrdən başlayaraq hər bir sayt üçün maneə dərəcəsini və sahə ilə maneə yerləri arasındakı məsafənin tərsliyini tanıyan xüsusi bir statistik hesablaya bilərik:

A2 (Sayt Kimliği, Hindrance_potential_index)

Paralel olaraq, xüsusiyyətlərinə və əlçatanlıq və maneələrin göstəricilərinə əsasən ayrı-ayrı namizəd saytlarında bir fayda tədbiri verə bilərik:

İndi ən yüksək namizədlik göstəricisinə görə ən vacib namizədimiz var. Alternativ həllər fərqli çəki və ya orta səyahət məsafəsini minimuma endirmək kimi obyektiv meyarlardan istifadə etməklə yaradıla bilər.


Bitişik poliqonları birləşdirin və hamısını (bitişik və bitişik olmayan) Multipolygon kimi qaytarsın? - Coğrafi İnformasiya Sistemləri

AQUIFERS_BEDROCK_USGS_IN: İndianadakı Bedrock Akifer Sistemləri (Amerika Birləşmiş Ştatları Geoloji Araşdırması, 1: 500,000, Polygon Shapefile) Vektorlu rəqəmsal məlumatlar

İndiana Geoloji Tədqiqat

Bu məlumatlar 1: 500,000 və ya daha kiçik miqyasda istifadə üçün nəzərdə tutulmuşdur. Sulu təbəqə sistemlərinin xəritələşdirilməsində istifadə olunan məlumatların kiçik miqyaslı və seyrək olması səbəbindən əsas istifadə xüsusi yerli və ya əraziyə məxsus məlumat analizindən daha çox regional məlumatların göstərilməsi və təhlili üçündür.

Aşağıdakılar Fenelon və başqalarından alınmışdır (1994, səhifə 1): & quotDöküm sulu laylarda tamamlanan quyular ümumiyyətlə qum və çınqıl sulu təbəqələrin əksəriyyətindəki quyulara nisbətən daha az məhsuldarlıq göstərirlər, lakin qayaüstü sulu təbəqələr ümumiyyətlə geniş yayılmışdır və suyun əsas mənbəyidir. bir çox yerli istifadəçi və bəzi böyük yeraltı su istifadəçiləri. Karbonat süxurlar (əhəng daşı və doloston) qum daşları kompleks şəkildə döşənmiş qumdaşı, siltstone, şist, əhəng daşı və kömür və aşağı keçiricilik qabiliyyətli süxurlarda yüksək aşınmış zona təməl daş sulu təbəqələrin növlərindən ibarətdir. Silurian, Devonian və Mississippian yaşlarında olan karbonat qayalardakı sulu laylar, İndiananın təxminən yarısının altındadır və məhsuldarlıq və areal dərəcəsi baxımından təməl qatı sulu təbəqələrdən ən əhəmiyyətlidir. Digər əsas süxur sulu lay növü, İndiananın cənub-qərbindəki beşdə birinin böyük ərazilərinin əsasını təşkil edən qumdaşıdır. Eşlenen qumdaşları, Mississippiya və Pensilvaniya dövrünə aid kompleks qumlu daş, siltstone, şist, əhəng daşı və kömür yataqları içərisindədir. Bu kompleks çöküntülər dəyişkən keyfiyyətdə az miqdarda su verir, lakin müəyyən bir ərazidə mövcud olan yeganə sulu təbəqə olduqları təqdirdə vacibdir. Bir sahə üçün yeganə su mənbəyi olduqda istifadə edilən qalan qaya süxurları, ilk növbədə, Mississipp və Devon əsrindəki lil daş və şistlərdə və az miqdarda şist və əhəngdaşında inkişaf etmiş bir aşınmış zonadır. Ordovik yaşında. Ordovik əsrindəki şist və əhəng daşı ilə örtülü olan İndiananın cənub-şərq küncündə heç bir sulu dəniz xəritəsi yoxdur. & Quot; LYR (Aquifers_bedrock_USGS_IN.lyr) faylı bu məlumat qatına müşaiyət edir ki, istifadəçi simvolikaya kömək etsin ki, sulu sular sistemlərinin şaquli ardıcıllığı coğrafi məlumat sistemi (CİS) proqramında, xüsusən də ESRI proqram məhsullarında görünmək. 1994 Nəşr tarixi

Planlaşdırılan yoxdur -88.1603 -84.7395 41.7545 37.7562 Coğrafiya Şəbəkəsi Açar söz Tezaurus sərhəd coğrafi elmi məlumat IGS Metadata Açar söz Tezaurus İndiana Geoloji Araşdırması (IGS) Amerika Birləşmiş Ştatları Geoloji Araşdırması (USGS) su idarəsi hövzəsi çay hövzəsi sulu lay hidrogeologiya qayaüstü sulu lay akiferin verimi akiferin qalınlığı su hövzəsi qrunt suyu karbonat daş qatı lay mürəkkəb birləşdirilmiş qumdaşı, şist, əhəng daşı və kömür sulu layı qumdaşı daşları üst təbəqə qayaüstü sulu lay


Bənzər əlamətləri olan bitişik oktantların sadə qutulara səkkizdə bir qarışdırılması / həll edilməsi

AI aktyorları tərəfindən istifadə ediləcək bir naviqasiya həcmi yaratmağı səbirsizliklə gözləyirəm.

Burada həll etməyə çalışdığım yanaşma əvvəlcə bir səkkizlik yaratmaq və hörmətli bayraqlarla / məlumatla əlaqələndirməkdir (növ, indiyə kimi olanlar). Oktree kifayət qədər dərin olacaq (0,1 ədədə qədər).

Test məqsədləri üçün istifadə etdiyim səhnə budur:

1947817 nəticələrində 9 səviyyədə qovşaq. (22 x 9 x 22)

Bu oktri, müəyyən bayraqlara / verilərə uyğun oktantlardan yaranan vahid olmayan, oxa hizalı qutulara çevirəcək bir alqoritm / konsepsiya / yalançı kod axtarıram, məsələn, oxşar naviqasiya həcmini təyin etməyimə kömək edəcəkdir. burada nə görünə bilər (Havok):

"Axtarıram" ilə - əvvəllər mövcud olan belə bir alqoritm / konsepsiya hissi var, amma əmin deyiləm. Duyğu məni ümumi bir adın arxasında dayanan kifayət qədər riyazi problem olmağa sürükləyir.

Digər yanaşma detallı forma üçün bəzi qutulara qədər genişləndirilməsi (sadələşdirilməsi) üçün qeyri-bərabər bir şəbəkədən istifadə etmək (4356000 hüceyrə yaradır). Hissimin dediyi, eyni alqoritmdən istifadə edər.

O ki qaldı "nə hiss etdiniz" - yaxşı. Bir müddət açar sözlərdən müxtəlif kombinasiyalarla googled etdim şəbəkə, birləşmə, hücrə, bayraqlar, işğal olunmuş, gamedev, oktant, böyümək, ən böyük boşluq, bitişik və bəlkə də bəzilərinin heç bir faydası yoxdur. Yaxşı, basmadan əvvəl Post düyməsini, daha çox açar sözlər sınadım və bu cavabla bitdim: https://gis.stackexchange.com/questions/23365/how-to-combine-adjacent-polygons-sharing-similar-trait-into-single-polygon axtardığım şeyə yaxın görünən, ancaq 2D olmasıdır (baxmayaraq ki, bu sorğu üçün "çoxbucaqlı" sözünü verdim). Prosesin "həll et" adlandırıldığını öyrəndikdən sonra "həll et" sözü əlavə edilmiş müxtəlif kombinasiyalarla daha çox cəhd etdim. Və tapıntılarım sayəsində daha çox axtarış və s. Yaxşı. heç nə.

Cavab heç bir nəticə verməzsə, bilirəm ki, cəhənnəmdən çıxaraq buna cəhd edə bilərəm qrafik hər iki küncdən başlayaraq və hamısını su basaraq, əsasən, kobud şəkildə yolumu məcbur edirəm.

Mənə yönəldilə biləcəyim ümumi alqoritm / konsepsiya artıq var?
və ya - belə bir məhsul istehsal etmək üçün hansı qaydalara əməl etməliyəm?


6 Cavablar 6

Dikişlər GL_REPEAT ilə nümunə götürmək üçün düzgün davranışdır. Aşağıdakı plitəni nəzərdən keçirin:

Fraksiya dəyərlərindən istifadə edərək plitənin kənarlarında nümunələr götürmək kənarları və əks kənarları rəngləri qarışdırır, nəticədə səhv rənglər yaranır: Sol kənar yaşıl olmalıdır, ancaq yaşıl və bej rəngli bir qarışıqdır. Sağ kənar bej rəngli olmalıdır, eyni zamanda qarışıq bir rəngdir. Xüsusilə yaşıl fonda bej rəngli xətlər çox görünür, ancaq diqqətlə baxsanız kənarında yaşıl qanaxma olduğunu görə bilərsiniz:

antialiasing dikişləri azaldır, lakin tamamilə aradan qaldırmaz

MSAA çoxbucaqlı kənarlarda daha çox nümunə götürərək işləyir. Kənardan soldan və ya sağdan alınan nümunələr "yaşıl" olacaq (ilk şəklin sol kənarını nəzərə alaraq) və yalnız bir nümunə "kənarda" olacaq, "bej" bölgəsindən qismən nümunə götürüləcək. Nümunələr qarışdırıldıqda təsir azalacaq.

Mümkün həllər:

Hər halda toxumanın əks tərəfindəki pikseldən qanaxmanın qarşısını almaq üçün GL_CLAMP-yə keçməlisiniz. Sonra üç seçiminiz var:

Plitələr arasındakı keçişi bir az hamarlaşdırmaq üçün yumuşatma qarşısını alın.

Doku süzgəcini GL_NEAREST olaraq təyin edin. Bu, bütün piksellərə sərt kənar verir, beləliklə çoxbucaqlı / sprite kənarları fərqlənmir, ancaq açıq şəkildə oyunun üslubunu dəyişdirir.

Artıq müzakirə olunan 1px sərhəd əlavə edin, yalnız haşiyənin bitişik kafelin rənginə sahib olduğundan əmin olun (və əks kənarın rəngi deyil).

  • Bu, eyni zamanda bir toxuma atlasına keçmək üçün yaxşı bir vaxt ola bilər (NPOT dəstəyi ilə maraqlansanız, onu daha da artırın).
  • Bu, çoxbucaqlıların / spritlərin kənarlarında GL_LINEAR kimi filtrləmə imkanı verən yeganə "mükəmməl" həlldir.

Varsayılan olaraq OpenGL yalnız bir hissəsini deyil, bütün toxumasını (GL_REPEAT) bükə bildiyindən, hər bir kafel ayrı bir toxuma ayrılır. Sonra eyni kafelin bölgələri bir-birinə bitişik göstərilmişdir.

OpenGL-də tək, adi bir dokulu dördlüyün göstərilməsini nəzərdən keçirin. İstənilən miqyasda tikiş varmı? Heç vaxt yox. Məqsədiniz bütün səhnə plitələrinizi tək bir toxumaya sıx şəkildə yerləşdirməkdir, sonra bunu ekrana göndərin. Redaktə edin Bunu daha da aydınlaşdırmaq üçün: Hər bir çini dördlüyündə ayrı-ayrı məhdudlaşdırıcı təpələriniz varsa, sizsiniz olacaq əksər hallarda əsassız görünən tikişlərə sahibdirlər. GPU donanımı necə işləyir. üzən nöqtə səhvləri mövcud boşluqlara əsaslanaraq bu boşluqları yaradır. iki üz bitişik olduğu üçün birləşdirilmiş manifoldda qarşısını alan səhvlər eyni manifoldda (submesh), hardware onları zəmanət olmadan tikişsiz göstərəcəkdir. Bunu saysız oyun və tətbiqetmədə gördünüz. Bunun birdəfəlik qarşısını almaq üçün ikiqat təpələr olmadan tək bir submesh üzərində sıx bir şəkildə qurulmuş bir toxuma olmalıdır. Bu saytda və başqa yerlərdə dəfələrlə gündəmə gələn bir məsələdir: plitələrinizin künc təpələrini birləşdirmirsinizsə (hər 4 plitə bir künc təpəsini paylaşır), dikişlər gözləyin.

(Nəzərə alın ki, bütün xəritənin dörd küncündə istisna olmaqla, təpələrə ehtiyacınız olmayacaq. Kölgələmə yanaşmanızdan asılıdır.)

Həll etmək üçün: (1: 1-də) bütün çini toxumalarınızı boşluqlar olmadan bir FBO / RBO-ya çevirin, sonra həmin FBO-nu standart çərçivə buferinə (ekran) göndərin. FBO özü əsasən tək bir toxuma olduğundan, miqyaslı boşluqlarla sona çatmaq olmaz. GL_LINEAR istifadə edirsinizsə, ekran piksel sərhədinə düşməyən bütün tekel sərhədləri qarışdırılacaqdır. tam olaraq istədiyin budur. Bu standart yanaşmadır.

Bu da miqyaslandırma üçün bir sıra fərqli marşrutlar açır:

  • FBO göstərəcəyiniz dördlüyün ölçüsünü ölçmək
  • bu dördündəki UV-lərin dəyişdirilməsi
  • kamera parametrləri ilə səhv

Şəkillər bir səth kimi görünsə, bunları bir 3D mesh / müstəvidə bir səth toxuması (miqyas 1x) şəklində göstərin. Hər birini ayrı bir 3D obyekt kimi göstərsəniz, yuvarlaqlaşdırma səhvlərinə görə hər zaman tikişlər olacaqdır.

@ Nick-Wiggill-in cavabı düzgündür, düşünürəm ki, səhv başa düşmüsən.

Çalışmağa dəyər ola biləcək 2 imkan:

Dokunuzu filtrləmək üçün GL_LINEAR əvəzinə GL_NEAREST istifadə edin. (Andon M. Colemanın işarə etdiyi kimi)

GL_LINEAR (faktiki olaraq) görüntünü bu qədər az bulanacaq (ən yaxın piksellər arasında interpolasiya), bu da bir pikseldən digərinə rəngdə hamar keçid imkanı verir. Bu, bir çox vəziyyətdə toxumaların daha yaxşı görünməsinə kömək edə bilər, çünki dokularınızın hər tərəfində bu blok piksellərə sahib olmasının qarşısını alır. Həm də bir kafelin bir pikselindən bir az qəhvəyi rəngin bitişik kafelin bitişik yaşıl pikselinə bulanmasını təmin edir.

GL_NEAREST yalnız ən yaxın pikselini tapır və bu rəngi istifadə edir. İnterpolasiya yoxdur. Nəticədə, həqiqətən bir az daha sürətli olur.

Hər kafel üçün toxuma koordinatlarını bir az daraltın.

Hər plitə ətrafındakı əlavə pikselin tampon şəklində əlavə edilməsinə bənzər bir şey, şəkildəki çini genişləndirmək əvəzinə, proqramdakı plitəni kiçiltmisiniz. 16x16px plitələr yerinə göstərilərkən 14x14px plitələr.

14.5x14.5 plitələrlə çox qəhvəyi qarışdırılmadan qaça biləcəksiniz.

Yuxarıdakı şəkildə göstərildiyi kimi, hələ də iki toxumalı gücdən asanlıqla istifadə edə bilərsiniz. Beləliklə, NPOT toxumalarını dəstəkləməyən dəstəyi dəstəkləyə bilərsiniz. (0.0f, 0.0f) - dən (1.0f, 1.0f) - (0.03125f, 0.03125f) - dən (0.96875f, 0.96875f) - ə getmək əvəzinə toxuma koordinatları dəyişir.

Bu, tex koordinatlarınızı kafelin içərisinə bir az qoyur ki, bu da oyundakı effektiv qətnaməni azaldır (baxmayaraq ki, hələ də iki gücə sahib toxumalara sahib olmalısınız), lakin fakturanı genişləndirməklə eyni təsirə malik olmalıdır.

Bunun ola biləcəyini düşünürəm: İki plitənin toqquşduğu yerdə, kənarlarının x komponenti bərabər olmalıdır. Bu doğru deyilsə, əks istiqamətə yuvarlana bilərlər. Buna görə tam olaraq x dəyərinə sahib olduqlarından əmin olun. Bunun baş verməsini necə təmin edirsiniz? 10-a vurmağı, yuvarlaqlaşdırmağı və sonra 10-a bölmək üçün cəhd edə bilərsiniz (bunu yalnız kökündə vertex kölgələyiciyə getmədən əvvəl CPU-da edin). Düzgün nəticələr verməlidir. Ayrıca, çevrilmə matrislərindən istifadə edərək kafel ilə kafel çəkməyin, əksinə matris vuruşları ilə birlikdə itkin IEEE üzən nöqtə sistemindən səhv nəticələr çıxmadığından əmin olmaq üçün onları bir toplu VBO-ya qoyun.

Niyə bunu təklif edirəm? Çünki mənim təcrübəmdən, təpələr kölgə gölgələyicidən çıxdıqda eyni koordinatlara sahibdirlərsə, uyğun üçbucaqları doldurmaq qüsursuz nəticələr yaradacaqdır. Riyazi cəhətdən düzgün olan bir şeyin IEEE səbəbiylə bir az ola biləcəyini unutmayın. Rəqəmlərinizdə nə qədər çox hesablama aparsanız, nəticə bir o qədər dəqiq olmayacaqdır. Və bəli, matris vurma üçün daha dəqiq nəticələr verəcək VBO'nuzu yaratarkən yalnız bir vurma və əlavə ilə edilə biləcək bəzi əməliyyatlar lazımdır.

Problem də bir spritesheet istifadə etməyinizdir (buna atlas da deyilir) və toxumadan nümunə götürərkən bitişik kafel toxumasının pikselləri seçilir. Bunun baş verməməsini təmin etmək, UV xəritələrində kiçik bir haşiyə yaratmaqdır. Beləliklə, 64x64 kafeliniz varsa, UV xəritələşdirməyiniz bir az az olmalıdır. Nə qədər? Düşünürəm ki, oyunlarımda düzbucaqlının hər tərəfində pikselin dörddə biri. Beləliklə, UV komponentlərinizi x komponentləri üçün 1 / (4 * widthOfTheAtlas) və y komponentləri üçün 1 / (4 * heightOfTheAtlas) ilə kompensasiya edin.


Təşəkkürlər

[46] Arizona Universitetində, Jet Propulsion Laboratoriyasında, Ball Aerospace-də və HiRISE kamerasını quran və işlədən Lockheed Martin insanlarına təşəkkür edirik. Arizona Universitetindəki HiRISE Əməliyyat Mərkəzinin (HiROC) insanlarına bu iş üçün istifadə olunan HiRISE şəkillərini əldə etdikləri və işlətdikləri üçün təşəkkür edirik. Bu iş İsveçrə Milli Elm Fondu tərəfindən dəstəklənmişdir.

Diqqət yetirin: Nəşriyyat müəlliflər tərəfindən verilən hər hansı bir dəstəkləyici məlumatın məzmunu və ya funksionallığı üçün məsuliyyət daşımır. Hər hansı bir sorğu (çatışmayan məzmundan başqa) məqalə üçün müvafiq müəllifə göndərilməlidir.


Videoya baxın: Test daxiline və xaricinə çəkilmiş çoxbucaqlılar bölüm-5 (Oktyabr 2021).