Jan Cajthaml | cajthjan@fel.cvut.cz |
7:30—9:00 D. Sedláček |
Vlevo je pohled z Instant playeru, uprostřed použitá textura a vpravo obrázek z hotové scény.
Fasáda domu byla vygenerována pomocí nástroje Facade Wizard v City Enginu, výsledná fasáda má vytlačená okna i dveře. Střecha byla náhodně vygenerována z ručně napsaného skriptu.
Počet trojúhelníků | 0 |
Nejvyšší úroveň detailu | 0 |
Nižší úroveň detailu | 0 |
Snímková rychlost v Instant Playeru | 0 |
Odkaz na zdrojový kód gramatiky | 0 |
version "2012.1" attr LOD = 2 # LOD 0 generates the original texture # LOD 1 generates flat splits # LOD 2 generates splits with depth as defined in Facade Wizard #! SIZE 30.0 67.38461 const n = 5 Facade --> case LOD <= 0: texture("/Praha/images/B1D.png") alignScopeToGeometry(zUp, 0, world.lowest) setupProjection(0, scope.xy, '1.0000, '1.0000) projectUV(0) else: texture("/Praha/images/B1D.png") alignScopeToGeometry(zUp, 0, world.lowest) split(y, noAdjust) { ~15.11: Facade__1(0) | 9.01: Facade__1(1) | ~19.55: Facade__1(2) | ~15.43: Facade__1(3) | 8.29: Facade__1(4) } FacadeTrigger(i) --> case LOD <= 0: texture("/Praha/images/B1D.png") alignScopeToGeometry(zUp, 0, world.lowest) setupProjection(0, scope.xy, '1.0000, '1.0000) projectUV(0) else: texture("/Praha/images/B1D.png") alignScopeToGeometry(zUp, 0, world.lowest) Facade__1(i) Facade__1(i) --> case i == 0: Facade__1_1 case i == 1: Facade__1_2 case i == 2: Facade__1_3 case i == 3: Facade__1_4 case i == 4: Facade__1_5 else: Facade__1_1 Facade__1_1 --> split(x, noAdjust) { 5.03: Facade__1_1_1 | 4.89: Facade__1_1_2 | ~20.09: Facade__1_1_3 } Facade__1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '5.9696, '4.4605) projectUV(0) else: setupProjection(0, scope.xy, '5.9696, '4.4605) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_1_2 --> split(y, noAdjust) { ~7.93: Facade__1_1_2_1 | 7.18: Facade__1_1_2_2 } Facade__1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '6.1375, '8.4999, '-1.0281, '0.0000) projectUV(0) else: setupProjection(0, scope.xy, '6.1375, '8.4999, '-1.0281, '0.0000) t(0, 0, -0.6) projectUV(0) Facade__1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '6.1375, '9.3860, '-1.0281, '-1.1043) projectUV(0) else: setupProjection(0, scope.xy, '6.1375, '9.3860, '-1.0281, '-1.1043) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_1_3 --> split(y, noAdjust) { 1.05: Facade__1_1_3_1 | ~5.96: Facade__1_1_3_2 | ~8.10: Facade__1_1_3_3 } Facade__1_1_3_1 --> case LOD <= 1: setupProjection(0, scope.xy, '1.4935, '63.9356, '-0.4935, '0.0000) projectUV(0) else: setupProjection(0, scope.xy, '1.4935, '63.9356, '-0.4935, '0.0000) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_1_3_2 --> split(x, noAdjust) { ~9.62: Facade__1_1_3_2_1 | 5.50: Facade__1_1_3_2_2 | 4.96: Facade__1_1_3_2_3 } Facade__1_1_3_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '3.1175, '11.3114, '-1.0302, '-0.1769) projectUV(0) else: setupProjection(0, scope.xy, '3.1175, '11.3114, '-1.0302, '-0.1769) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_1_3_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '5.4555, '11.3114, '-3.5528, '-0.1769) projectUV(0) else: setupProjection(0, scope.xy, '5.4555, '11.3114, '-3.5528, '-0.1769) t(0, 0, -0.6) s('1, '1, 0.3) i("builtin:cube") projectUV(0) Facade__1_1_3_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '6.0431, '11.3114, '-5.0431, '-0.1769) projectUV(0) else: setupProjection(0, scope.xy, '6.0431, '11.3114, '-5.0431, '-0.1769) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_1_3_3 --> case LOD <= 1: setupProjection(0, scope.xy, '1.4935, '8.3235, '-0.4935, '-0.8660) projectUV(0) else: setupProjection(0, scope.xy, '1.4935, '8.3235, '-0.4935, '-0.8660) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_2 --> split(y, noAdjust) { ~9.01: Facade__1_2_1 }* Facade__1_2_1 --> split(x, noAdjust) { ~7.50: Facade__1_2_1_1 }* Facade__1_2_1_1 --> split(x, noAdjust) { 1.97: Facade__1_2_1_1_1 | ~4.12: Facade__1_2_1_1_2 | 1.41: Facade__1_2_1_1_3 } Facade__1_2_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '15.2250, '7.4770, '0.0000, '-1.6763) projectUV(0) else: setupProjection(0, scope.xy, '15.2250, '7.4770, '0.0000, '-1.6763) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_2_1_1_2 --> split(y, noAdjust) { 1.83: Facade__1_2_1_1_2_1 | ~5.19: Facade__1_2_1_1_2_2 | 1.99: Facade__1_2_1_1_2_3 } Facade__1_2_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '36.7620, '-0.4778, '-8.2416) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '36.7620, '-0.4778, '-8.2416) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_2_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '12.9748, '-0.4778, '-3.2618) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '12.9748, '-0.4778, '-3.2618) t(0, 0, -0.6) s('1, '1, 0.20000002) i("builtin:cube") projectUV(0) Facade__1_2_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '33.9342, '-0.4778, '-11.1461) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '33.9342, '-0.4778, '-11.1461) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_2_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '21.3474, '7.4770, '-4.3369, '-1.6763) projectUV(0) else: setupProjection(0, scope.xy, '21.3474, '7.4770, '-4.3369, '-1.6763) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3 --> split(y, noAdjust) { ~19.55: Facade__1_3_1 }* Facade__1_3_1 --> split(y, noAdjust) { ~9.93: Facade__1_3_1_1 | 9.62: Facade__1_3_1_2 } Facade__1_3_1_1 --> split(y, noAdjust) { ~9.93: Facade__1_3_1_1_1 }* Facade__1_3_1_1_1 --> split(x, noAdjust) { ~7.50: Facade__1_3_1_1_1_1 }* Facade__1_3_1_1_1_1 --> split(x, noAdjust) { 1.97: Facade__1_3_1_1_1_1_1 | ~4.28: Facade__1_3_1_1_1_1_2 | 1.25: Facade__1_3_1_1_1_1_3 } Facade__1_3_1_1_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '15.2250, '6.7868, '0.0000, '-2.4292) projectUV(0) else: setupProjection(0, scope.xy, '15.2250, '6.7868, '0.0000, '-2.4292) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_1_1_1_2 --> split(y, noAdjust) { 1.99: Facade__1_3_1_1_1_1_2_1 | ~4.89: Facade__1_3_1_1_1_1_2_2 | 3.05: Facade__1_3_1_1_1_1_2_3 } Facade__1_3_1_1_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '7.0143, '33.9342, '-0.4607, '-12.1461) projectUV(0) else: setupProjection(0, scope.xy, '7.0143, '33.9342, '-0.4607, '-12.1461) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_1_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '7.0143, '13.7858, '-0.4607, '-5.3406) projectUV(0) else: setupProjection(0, scope.xy, '7.0143, '13.7858, '-0.4607, '-5.3406) t(0, 0, -0.6) s('1, '1, 0.20000002) i("builtin:cube") projectUV(0) Facade__1_3_1_1_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '7.0143, '22.0572, '-0.4607, '-10.1450) projectUV(0) else: setupProjection(0, scope.xy, '7.0143, '22.0572, '-0.4607, '-10.1450) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_1_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '23.9508, '6.7868, '-4.9877, '-2.4292) projectUV(0) else: setupProjection(0, scope.xy, '23.9508, '6.7868, '-4.9877, '-2.4292) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_2 --> split(y, noAdjust) { ~9.62: Facade__1_3_1_2_1 }* Facade__1_3_1_2_1 --> split(x, noAdjust) { ~7.50: Facade__1_3_1_2_1_1 }* Facade__1_3_1_2_1_1 --> split(x, noAdjust) { 1.97: Facade__1_3_1_2_1_1_1 | ~3.97: Facade__1_3_1_2_1_1_2 | 1.56: Facade__1_3_1_2_1_1_3 } Facade__1_3_1_2_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '15.2250, '7.0023, '0.0000, '-3.5381) projectUV(0) else: setupProjection(0, scope.xy, '15.2250, '7.0023, '0.0000, '-3.5381) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_2_1_1_2 --> split(y, noAdjust) { 1.53: Facade__1_3_1_2_1_1_2_1 | ~5.80: Facade__1_3_1_2_1_1_2_2 | 2.29: Facade__1_3_1_2_1_1_2_3 } Facade__1_3_1_2_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '7.5538, '44.1144, '-0.4961, '-22.2899) projectUV(0) else: setupProjection(0, scope.xy, '7.5538, '44.1144, '-0.4961, '-22.2899) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_2_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '7.5538, '11.6091, '-0.4961, '-6.1289) projectUV(0) else: setupProjection(0, scope.xy, '7.5538, '11.6091, '-0.4961, '-6.1289) t(0, 0, -0.6) s('1, '1, 0.20000002) i("builtin:cube") projectUV(0) Facade__1_3_1_2_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '7.5538, '29.4096, '-0.4961, '-18.0600) projectUV(0) else: setupProjection(0, scope.xy, '7.5538, '29.4096, '-0.4961, '-18.0600) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_3_1_2_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '19.2546, '7.0023, '-3.8137, '-3.5381) projectUV(0) else: setupProjection(0, scope.xy, '19.2546, '7.0023, '-3.8137, '-3.5381) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4 --> split(y, noAdjust) { ~15.43: Facade__1_4_1 }* Facade__1_4_1 --> split(y, noAdjust) { ~7.94: Facade__1_4_1_1 | 7.48: Facade__1_4_1_2 } Facade__1_4_1_1 --> split(y, noAdjust) { ~7.94: Facade__1_4_1_1_1 }* Facade__1_4_1_1_1 --> split(x, noAdjust) { ~7.50: Facade__1_4_1_1_1_1 }* Facade__1_4_1_1_1_1 --> split(x, noAdjust) { 2.12: Facade__1_4_1_1_1_1_1 | ~4.43: Facade__1_4_1_1_1_1_2 | 0.95: Facade__1_4_1_1_1_1_3 } Facade__1_4_1_1_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '14.1297, '8.4835, '0.0000, '-5.4981) projectUV(0) else: setupProjection(0, scope.xy, '14.1297, '8.4835, '0.0000, '-5.4981) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_1_1_1_2 --> split(y, noAdjust) { 1.83: Facade__1_4_1_1_1_1_2_1 | ~4.28: Facade__1_4_1_1_1_1_2_2 | 1.83: Facade__1_4_1_1_1_1_2_3 } Facade__1_4_1_1_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '36.7621, '-0.4793, '-23.8250) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '36.7621, '-0.4793, '-23.8250) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_1_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '15.7551, '-0.4793, '-10.6393) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '15.7551, '-0.4793, '-10.6393) t(0, 0, -0.6) s('1, '1, 0.15000004) i("builtin:cube") projectUV(0) Facade__1_4_1_1_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '36.7621, '-0.4793, '-27.1584) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '36.7621, '-0.4793, '-27.1584) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_1_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '31.6767, '8.4835, '-6.9192, '-5.4981) projectUV(0) else: setupProjection(0, scope.xy, '31.6767, '8.4835, '-6.9192, '-5.4981) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_2 --> split(y, noAdjust) { ~7.48: Facade__1_4_1_2_1 }* Facade__1_4_1_2_1 --> split(x, noAdjust) { ~7.50: Facade__1_4_1_2_1_1 }* Facade__1_4_1_2_1_1 --> split(x, noAdjust) { 1.97: Facade__1_4_1_2_1_1_1 | ~4.43: Facade__1_4_1_2_1_1_2 | 1.10: Facade__1_4_1_2_1_1_3 } Facade__1_4_1_2_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '15.2250, '9.0029, '0.0000, '-6.8959) projectUV(0) else: setupProjection(0, scope.xy, '15.2250, '9.0029, '0.0000, '-6.8959) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_2_1_1_2 --> split(y, noAdjust) { 1.07: Facade__1_4_1_2_1_1_2_1 | ~4.43: Facade__1_4_1_2_1_1_2_2 | 1.99: Facade__1_4_1_2_1_1_2_3 } Facade__1_4_1_2_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '63.0206, '-0.4448, '-48.2714) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '63.0206, '-0.4448, '-48.2714) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_2_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '15.2119, '-0.4448, '-11.8931) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '15.2119, '-0.4448, '-11.8931) t(0, 0, -0.6) s('1, '1, 0.20000002) i("builtin:cube") projectUV(0) Facade__1_4_1_2_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '6.7724, '33.9340, '-0.4448, '-28.7614) projectUV(0) else: setupProjection(0, scope.xy, '6.7724, '33.9340, '-0.4448, '-28.7614) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_4_1_2_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '27.2773, '9.0029, '-5.8193, '-6.8959) projectUV(0) else: setupProjection(0, scope.xy, '27.2773, '9.0029, '-5.8193, '-6.8959) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_5 --> split(y, noAdjust) { ~8.29: Facade__1_5_1 }* Facade__1_5_1 --> split(x, noAdjust) { ~7.50: Facade__1_5_1_1 }* Facade__1_5_1_1 --> split(x, noAdjust) { 1.97: Facade__1_5_1_1_1 | ~4.12: Facade__1_5_1_1_2 | 1.41: Facade__1_5_1_1_3 } Facade__1_5_1_1_1 --> case LOD <= 1: setupProjection(0, scope.xy, '15.2250, '8.1325, '0.0000, '-7.1325) projectUV(0) else: setupProjection(0, scope.xy, '15.2250, '8.1325, '0.0000, '-7.1325) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_5_1_1_2 --> split(y, noAdjust) { 1.53: Facade__1_5_1_1_2_1 | ~4.74: Facade__1_5_1_1_2_2 | 2.02: Facade__1_5_1_1_2_3 } Facade__1_5_1_1_2_1 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '44.1144, '-0.4778, '-38.6899) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '44.1144, '-0.4778, '-38.6899) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_5_1_1_2_2 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '14.2305, '-0.4778, '-12.8032) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '14.2305, '-0.4778, '-12.8032) t(0, 0, -0.6) s('1, '1, 0.20000002) i("builtin:cube") projectUV(0) Facade__1_5_1_1_2_3 --> case LOD <= 1: setupProjection(0, scope.xy, '7.2741, '33.3082, '-0.4778, '-32.3082) projectUV(0) else: setupProjection(0, scope.xy, '7.2741, '33.3082, '-0.4778, '-32.3082) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0) Facade__1_5_1_1_3 --> case LOD <= 1: setupProjection(0, scope.xy, '21.3475, '8.1325, '-4.3369, '-7.1325) projectUV(0) else: setupProjection(0, scope.xy, '21.3475, '8.1325, '-4.3369, '-7.1325) t(0, 0, -0.6) s('1, '1, 0.6) i("builtin:cube") projectUV(0)