1
- // ôàéëû ñ ðàñøèðåíèåì *.map è *.hed äîëæíû íàõîäèòñÿ â îäíîé ïàïêå ñ cêîìïèëèðîâàííûì *.exe
2
- // ïðîáëåìû ñ ïîâîòîðîì êàðòû ïî îñÿì - ëåãêî ðåøàåò â Unity - ïóò¸ì èçìåíåíèÿ çíàêà êîîðäèíàòû ;)
3
- // ìîãóò áûòü ïðîáëåìû ñ íîðìàëÿìè , õç êàê èõ ÷èòàòü
1
+ // файлы с расширением *.map и *.hed должны находится в одной папке с cкомпилированным *.exe
2
+ // проблемы с повотором карты по осям - легко решает в Unity - путём изменения знака координаты ;)
3
+ // могут быть проблемы с нормалями , хз как их читать
4
4
5
5
using System ;
6
6
using System . IO ;
9
9
using System . Collections . Generic ;
10
10
using System . Text . RegularExpressions ;
11
11
12
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
12
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
13
13
14
14
public class EarthGenerator
15
15
{
16
16
17
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
17
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
18
18
19
19
static void Main ( )
20
20
{
21
21
22
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
22
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
23
23
24
- List < string > WritePLYList = new List < string > ( ) ; // ñþäà áóäåì äîáàâëÿòü âñå ñòðîêè
24
+ List < string > WritePLYList = new List < string > ( ) ; // сюда будем добавлять все строки
25
25
List < string > faceList = new List < string > ( ) ;
26
26
27
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
27
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
28
28
29
29
List < float > blist_height = new List < float > ( ) ;
30
30
List < float > blist_scale = new List < float > ( ) ;
@@ -34,23 +34,23 @@ static void Main()
34
34
List < byte > texture = new List < byte > ( ) ;
35
35
SortedList < int , byte > textureSL = new SortedList < int , byte > ( ) ;
36
36
37
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
37
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
38
38
39
- // òî÷êè âìåñòî çàïÿòûõ // õîòÿ äëÿ obj ýòî íå âàæíî âðîäå áû // êàê è òàáû âìåñòî ïðîáåëîâ
39
+ // точки вместо запятых // хотя для obj это не важно вроде бы // как и табы вместо пробелов
40
40
System . Threading . Thread . CurrentThread . CurrentCulture = new System . Globalization . CultureInfo ( "en-US" ) ;
41
41
42
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
42
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
43
43
44
44
DirectoryInfo d = new DirectoryInfo ( Directory . GetCurrentDirectory ( ) ) ;
45
45
46
46
FileInfo [ ] MapPath = d . GetFiles ( "*.map" ) ;
47
47
48
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
48
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
49
49
50
50
foreach ( FileInfo file in MapPath )
51
51
{
52
52
53
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
53
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
54
54
55
55
byte [ ] array1d = File . ReadAllBytes ( file . Name ) ;
56
56
@@ -68,18 +68,18 @@ static void Main()
68
68
int width = Convert . ToInt32 ( m . ToString ( ) ) ; //width_and_height[0]
69
69
int height = Convert . ToInt32 ( m . NextMatch ( ) . ToString ( ) ) ; //width_and_height[1]
70
70
71
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
71
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
72
72
73
73
List < string > uvs_quad = new List < string > ( ) ;
74
74
75
- int j = 0 ; // äëÿ ñ÷¸ò÷èêà textureSL òåêñòóð
75
+ int j = 0 ; // для счётчика textureSL текстур
76
76
77
77
for ( int i = 0 ; i < array1d . Length ; i += 56 )
78
78
{
79
79
// vertex.y
80
80
81
- blist_height . Add ( array1d [ i + 36 ] / 255f ) ; // âûñîòà
82
- blist_scale . Add ( array1d [ i + 37 ] / 1f ) ; // ìàñøòàá
81
+ blist_height . Add ( array1d [ i + 36 ] / 255f ) ; // высота
82
+ blist_scale . Add ( array1d [ i + 37 ] / 1f ) ; // масштаб
83
83
84
84
// texture
85
85
@@ -89,7 +89,7 @@ static void Main()
89
89
90
90
// type of block
91
91
92
- block_type . Add ( array1d [ i + 44 ] ) ; // òèï áëîêà
92
+ block_type . Add ( array1d [ i + 44 ] ) ; // тип блока
93
93
94
94
// uvs
95
95
@@ -109,34 +109,34 @@ static void Main()
109
109
Console.WriteLine ( "uvs_quad " + uvs_quad[0] ) ;
110
110
Console.WriteLine ( "block_type " + block_type[0] ) ;
111
111
*/
112
- //Console.WriteLine("íîìåðà òåêñòóð ") ;
112
+ //Console.WriteLine("номера текстур ") ;
113
113
//foreach ( var item in textureSL ) Console.WriteLine(item) ;
114
114
115
- //Console.WriteLine("ïåðâûå ñåìü uvs_per_dace") ;
115
+ //Console.WriteLine("первые семь uvs_per_dace") ;
116
116
//for ( int i = 0 ; i < 8 ; i++ ) Console.WriteLine(uvs_quad[i]*255f);
117
117
118
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
119
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
120
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
118
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
119
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
120
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
121
121
122
- WritePLYList . Add ( "ply" ) ; // ìàãè÷åñêîå ñëîâî
122
+ WritePLYList . Add ( "ply" ) ; // магическое слово
123
123
124
- WritePLYList . Add ( "format ascii 1.0" ) ; // åäèíñòâåííàÿ âåðñèÿ ôîðìàòà
124
+ WritePLYList . Add ( "format ascii 1.0" ) ; // единственная версия формата
125
125
126
- foreach ( var item in textureSL ) // äîáàâëÿåì âñå ñòðîêè õðàíÿùèåñÿ â ñïèñêå - â âèäå êîììåíòàðèåâ â ôàéë
126
+ foreach ( var item in textureSL ) // добавляем все строки хранящиеся в списке - в виде комментариев в файл
127
127
{
128
128
WritePLYList . Add ( "comment TextureFile "
129
129
// + file.Name + "_"
130
130
+ item . Value + ".png" ) ;
131
131
}
132
132
133
- WritePLYList . Add ( "element vertex " + ( width * height ) ) ; // êîëè÷åñòâî âåðøèí
133
+ WritePLYList . Add ( "element vertex " + ( width * height ) ) ; // количество вершин
134
134
135
135
WritePLYList . Add ( "property float x" ) ;
136
136
WritePLYList . Add ( "property float y" ) ;
137
137
WritePLYList . Add ( "property float z" ) ;
138
138
139
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
139
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
140
140
141
141
for ( int x = 0 ; x < ( width * height ) ; x ++ )
142
142
{
@@ -154,20 +154,20 @@ static void Main()
154
154
if ( face_counter == 32513 ) face_counter = 32385 ; // 32766
155
155
if ( face_counter == 1922 ) face_counter = 1920 ;
156
156
*/
157
- WritePLYList . Add ( "element face " + face_counter ) ; // îáùåå êîëè÷åñòâî òðåóãîëüíûõ ãðàíåé
157
+ WritePLYList . Add ( "element face " + face_counter ) ; // общее количество треугольных граней
158
158
159
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
159
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
160
160
161
161
WritePLYList . Add ( "property list uchar int vertex_indices" ) ;
162
162
163
163
WritePLYList . Add ( "property list uchar float texcoord" ) ;
164
164
WritePLYList . Add ( "property int texnumber" ) ;
165
165
166
- WritePLYList . Add ( "end_header" ) ; // êîíåö çàãîëîâêà
166
+ WritePLYList . Add ( "end_header" ) ; // конец заголовка
167
167
168
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
168
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
169
169
170
- // äîáàâëÿåì â PLY ñïèñîê èç (width*height) âåðøèí â âèäå êîîðäèíàò X Y Z float-òèïà
170
+ // добавляем в PLY список из (width*height) вершин в виде координат X Y Z float-типа
171
171
172
172
int y = 0 ;
173
173
@@ -181,39 +181,39 @@ static void Main()
181
181
}
182
182
}
183
183
184
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
184
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
185
185
186
- // äîáàâëÿåì â PLY ñïèñîê ãðàíåé â âèäå [ 3 v1 v2 v3 6 x1 y1 x2 y2 x3 y3 texture_page ]
186
+ // добавляем в PLY список граней в виде [ 3 v1 v2 v3 6 x1 y1 x2 y2 x3 y3 texture_page ]
187
187
188
188
int t_page = 0 ;
189
189
190
190
for ( int x = 0 , uv_t = 0 , i = 0 ; x < ( width * height ) ; x ++ , uv_t ++ , i ++ )
191
191
{
192
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
192
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
193
193
194
194
foreach ( var item in textureSL )
195
195
if ( item . Value == texture [ i ] )
196
196
t_page = item . Key ;
197
197
198
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
198
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
199
199
200
200
// int v1 = x ; int v2 = x + 1 ; int v3 = x + width ; int v4 = x + width - 1 ;
201
201
202
202
WritePLYList . Add ( "3 " + x + " " + ( ++ x ) + " " + ( x + width - 1 ) + " " + uvs_quad [ uv_t ] + " " + t_page ) ; // 0 1 32___0 / 1___990 991 1022
203
203
204
- uv_t ++ ; // â ñòðî÷êå âûøå - íàêëàäûâàåì ïåðâûé Ó íà ïåðâûé òðåóãîëüíèê , â ñëåäóþùåé ñòðî÷êå - íà âòîðîé
204
+ uv_t ++ ; // в строчке выше - накладываем первый УВ на первый треугольник , в следующей строчке - на второй
205
205
206
206
WritePLYList . Add ( "3 " + x + " " + ( x + width ) + " " + ( x + width - 1 ) + " " + uvs_quad [ uv_t ] + " " + t_page ) ; // 1 33 32___32/33___991 1023 1022
207
207
208
- x -- ; // "îòêàò" èíäåêñà âåðøèí
208
+ x -- ; // "откат" индекса вершин
209
209
210
- if ( ( x + 2 ) % ( width ) == 0 ) x ++ ; // åñëè 31+1 % 32 == 0
210
+ if ( ( x + 2 ) % ( width ) == 0 ) x ++ ; // если 31+1 % 32 == 0
211
211
212
- if ( ( i + 2 ) % ( width ) == 0 ) i ++ ; // åñëè óæå íàëîæåíà ñòðîêà òåêñòóð ïî øèðèíå óðîâíÿ , òî ïåðåõîäèì íà ñëåäóùóþ ñòðîêó , ïåðåïðûãíóâ âåðøèíó
212
+ if ( ( i + 2 ) % ( width ) == 0 ) i ++ ; // если уже наложена строка текстур по ширине уровня , то переходим на следущую строку , перепрыгнув вершину
213
213
214
214
// if ( x > ( ( width * height ) - width - 2 ) ) break ;
215
215
216
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
216
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
217
217
218
218
// 60 61 ( 62 - 63) 64 65
219
219
// 124 125 (126 - 127) 128 129
@@ -237,25 +237,25 @@ static void Main()
237
237
238
238
}
239
239
240
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
240
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
241
241
242
- // ñîçäà¸ì PLY ôàéë
242
+ // создаём PLY файл
243
243
244
- string FileName = Path . GetFileNameWithoutExtension ( file . Name ) ; // "èìÿ ôàéëà áåç ðàñøèðåíèÿ "
245
- string WriteFilePath = FileName + "___PLY.ply" ; // "èìÿ [Map]ôàéëà(áåç [.map])___PLY.ply"
246
- string [ ] PLY_write_Text = WritePLYList . ToArray ( ) ; // âñå ñòðîêè èç ñïèñêà â ìàññèâ ñòðîê
247
- File . WriteAllLines ( WriteFilePath , PLY_write_Text ) ; // ìàññèâ ñòðîê çàïèñûâàåì â òåêñòîâûé ôàéë
244
+ string FileName = Path . GetFileNameWithoutExtension ( file . Name ) ; // "имя файла без расширения "
245
+ string WriteFilePath = FileName + "___PLY.ply" ; // "имя [Map]файла(без [.map])___PLY.ply"
246
+ string [ ] PLY_write_Text = WritePLYList . ToArray ( ) ; // все строки из списка в массив строк
247
+ File . WriteAllLines ( WriteFilePath , PLY_write_Text ) ; // массив строк записываем в текстовый файл
248
248
249
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
249
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
250
250
/*
251
- Console.WriteLine ( "êîëè÷åñòâî âåðøèí = " + blist_scale.Count ) ;
252
- Console.WriteLine ( "êîëè÷åñòâî âåðøèí = " + (width*height) ) ;
253
- Console.WriteLine ( "êîëè÷åñòâî òåêñòóð = " + texture.Count ) ;
254
- Console.WriteLine ( "êîëè÷åñòâî face = " + face_counter ) ;
255
- Console.WriteLine ( "êîëè÷åñòâî uvs = " + uvs_quad.Count ) ;
251
+ Console.WriteLine ( "количество вершин = " + blist_scale.Count ) ;
252
+ Console.WriteLine ( "количество вершин = " + (width*height) ) ;
253
+ Console.WriteLine ( "количество текстур = " + texture.Count ) ;
254
+ Console.WriteLine ( "количество face = " + face_counter ) ;
255
+ Console.WriteLine ( "количество uvs = " + uvs_quad.Count ) ;
256
256
Console.WriteLine ( "" ) ;
257
257
*/
258
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
258
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
259
259
260
260
WritePLYList . Clear ( ) ;
261
261
blist_height . Clear ( ) ;
@@ -266,20 +266,20 @@ static void Main()
266
266
textureSL . Clear ( ) ;
267
267
texture . Clear ( ) ;
268
268
269
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
269
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
270
270
271
271
// Console.WriteLine ( file.Name + " \t OK") ;
272
272
273
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
273
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
274
274
275
275
} // foreach
276
276
277
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
277
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
278
278
279
279
} // Main
280
280
281
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
281
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
282
282
283
283
} // class
284
284
285
- //æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
285
+ //жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
0 commit comments