Compare commits

..

4 Commits

Author SHA1 Message Date
Segey Lapin 18afb81b1f object asset update 2021-12-02 20:31:17 +03:00
Segey Lapin 79247e8e81 Project update 2021-12-02 20:30:18 +03:00
Segey Lapin 1a32732216 Removed town limits 2021-12-02 20:29:34 +03:00
Segey Lapin 48889c5044 Converted to grammar-based approach 2021-12-02 20:28:04 +03:00
39 changed files with 923 additions and 1592 deletions
+114 -1
View File
@@ -1,6 +1,6 @@
extends Reference extends Reference
static func build_house(main_xform: Transform): static func build_house2(main_xform: Transform):
var rnd = streaming.get_place_rnd(main_xform) var rnd = streaming.get_place_rnd(main_xform)
print(main_xform.origin, " seed = ", rnd.state) print(main_xform.origin, " seed = ", rnd.state)
var l = 5 + 2 * (rnd.randi() % 5) - 1 var l = 5 + 2 * (rnd.randi() % 5) - 1
@@ -52,3 +52,116 @@ static func build_house(main_xform: Transform):
objects.push_back({"xform": xform, "data": obj_data}) objects.push_back({"xform": xform, "data": obj_data})
return objects return objects
static func build_walls(pos: Vector3, rnd: RandomNumberGenerator):
var objects = []
var xt = [Transform(Basis(), pos), Transform(Basis().rotated(Vector3.UP, PI), pos - Vector3(0, 0, 2))]
for x in range(xt.size()):
var obj_data = []
if rnd.randf() > 0.5:
obj_data.push_back("wall_solid")
elif rnd.randf() > 0.5:
obj_data.push_back("window_narrow")
else:
obj_data.push_back("window_wide")
objects.push_back({"xform": xt[x], "data": obj_data})
return objects
static func build_house(main_xform: Transform):
var rnd = streaming.get_place_rnd(main_xform)
var terminals = [
"side_wall",
"side_wall_rotated",
"room",
"entry",
"room_range",
"wheels_room"
]
var grammar = {
"start": ["side_wall", "room", "wheels_room", "rooms_entry", "wheels_room", "side_wall_rotated"],
"rooms_entry": ["rooms", "entry!", "rooms"],
"rooms": ["rooms#", ["room", "range!"]],
"entry!": ["entry"],
"range!": ["room_range"],
"rooms#": ["rooms"]
}
var seen = {}
var queue = ["start"]
var complete = false
while !complete:
complete = true
var data = []
for k in range(queue.size()):
var item = queue[k]
print("item=", item)
if !item in terminals:
complete = false
for de in grammar[item]:
var e
if typeof(de) == TYPE_ARRAY:
while true:
e = de[rnd.randi() % de.size()]
if !e.ends_with("!") || !seen.has(e):
break
else:
e = de
print("e=", e)
if e.ends_with("!"):
if seen.has(e):
continue
else:
seen[e] = 1
if e.ends_with("#"):
if queue.size() < 12:
if rnd.randf() >= 0.3:
data.push_back(e)
else:
data.push_back(e)
else:
data.push_back(item)
queue = data
if complete:
if !seen.has("entry!") || !seen.has("range!"):
complete = false
seen.clear()
queue = ["start"]
print("queue: ", queue)
var objects = []
for k in range(queue.size()):
var pos = Vector3(0, 0, k * 2)
var xform = Transform(Basis(), pos)
var xt = [Transform(Basis(), pos), Transform(Basis().rotated(Vector3.UP, PI), pos - Vector3(0, 0, 2))]
match queue[k]:
"side_wall":
objects.push_back({"xform": xform, "data": ["side_wall", "bottom_side"]})
"room":
objects.push_back({"xform": xform, "data": ["roof_floor", "bottom"]})
objects.append_array(build_walls(pos, rnd))
if rnd.randf() > 0.6:
objects.push_back({"xform": xform, "data": ["wall_internal"]})
"wheels_room":
objects.push_back({"xform": xform, "data": ["roof_floor", "bottom_wheels"]})
objects.append_array(build_walls(pos, rnd))
if rnd.randf() > 0.6:
objects.push_back({"xform": xform, "data": ["wall_internal"]})
"room_range":
objects.push_back({"xform": xform, "data": ["roof_floor_range", "bottom"]})
objects.append_array(build_walls(pos, rnd))
if rnd.randf() > 0.6:
objects.push_back({"xform": xform, "data": ["wall_internal"]})
"entry":
for x in range(xt.size()):
var obj_data = []
if x == 0:
continue
if rnd.randf() > 0.5:
obj_data.push_back("wall_solid")
elif rnd.randf() > 0.5:
obj_data.push_back("window_narrow")
else:
obj_data.push_back("window_wide")
objects.push_back({"xform": xt[x], "data": obj_data})
objects.push_back({"xform": xform, "data": ["roof_floor", "entry", "bottom"]})
"side_wall_rotated":
objects.append_array(build_walls(pos, rnd))
objects.push_back({"xform": xform, "data": ["roof_floor", "side_wall_rotated", "bottom_side_rotated", "bottom"]})
return objects
+5
View File
@@ -36,6 +36,7 @@ scenario="*res://autoload/scenario.gd"
[debug] [debug]
settings/profiler/max_functions=65535
settings/stdout/verbose_stdout=true settings/stdout/verbose_stdout=true
[display] [display]
@@ -80,6 +81,10 @@ fps_mode={
] ]
} }
[physics]
3d/physics_engine="Bullet"
[rendering] [rendering]
quality/driver/fallback_to_gles2=true quality/driver/fallback_to_gles2=true
Binary file not shown.
+126 -236
View File
@@ -66,100 +66,13 @@
"materials" : [ "materials" : [
{ {
"doubleSided" : true, "doubleSided" : true,
"name" : "Green.004", "name" : "foilage",
"pbrMetallicRoughness" : { "pbrMetallicRoughness" : {
"baseColorFactor" : [ "baseColorTexture" : {
0.06995400041341782, "index" : 0
0.12185700237751007,
0.047887999564409256,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
}, },
{
"doubleSided" : true,
"name" : "Wood",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.12234099954366684,
0.05628800019621849,
0.04760900139808655,
1
],
"metallicFactor" : 0, "metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009 "roughnessFactor" : 0.6545454263687134
}
},
{
"doubleSided" : true,
"name" : "Leaves",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.12185700237751007,
0.09563499689102173,
0.07339099794626236,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
},
{
"doubleSided" : true,
"name" : "DarkGreen",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.042527999728918076,
0.07266899943351746,
0.02957800030708313,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
},
{
"doubleSided" : true,
"name" : "Green.005",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.06995400041341782,
0.12185700237751007,
0.047887999564409256,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
},
{
"doubleSided" : true,
"name" : "Yellow.001",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.358379989862442,
0.2837910056114197,
0.0901150032877922,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
},
{
"doubleSided" : true,
"name" : "Pink",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.373759001493454,
0.09044600278139114,
0.22160300612449646,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
} }
} }
], ],
@@ -170,9 +83,10 @@
{ {
"attributes" : { "attributes" : {
"POSITION" : 0, "POSITION" : 0,
"NORMAL" : 1 "NORMAL" : 1,
"TEXCOORD_0" : 2
}, },
"indices" : 2, "indices" : 3,
"material" : 0 "material" : 0
} }
] ]
@@ -182,19 +96,12 @@
"primitives" : [ "primitives" : [
{ {
"attributes" : { "attributes" : {
"POSITION" : 3, "POSITION" : 4,
"NORMAL" : 4 "NORMAL" : 5,
"TEXCOORD_0" : 6
}, },
"indices" : 5, "indices" : 7,
"material" : 1 "material" : 0
},
{
"attributes" : {
"POSITION" : 6,
"NORMAL" : 7
},
"indices" : 8,
"material" : 2
} }
] ]
}, },
@@ -203,11 +110,12 @@
"primitives" : [ "primitives" : [
{ {
"attributes" : { "attributes" : {
"POSITION" : 9, "POSITION" : 8,
"NORMAL" : 10 "NORMAL" : 9,
"TEXCOORD_0" : 10
}, },
"indices" : 11, "indices" : 11,
"material" : 3 "material" : 0
} }
] ]
}, },
@@ -217,10 +125,11 @@
{ {
"attributes" : { "attributes" : {
"POSITION" : 12, "POSITION" : 12,
"NORMAL" : 13 "NORMAL" : 13,
"TEXCOORD_0" : 14
}, },
"indices" : 14, "indices" : 15,
"material" : 4 "material" : 0
} }
] ]
}, },
@@ -229,23 +138,29 @@
"primitives" : [ "primitives" : [
{ {
"attributes" : { "attributes" : {
"POSITION" : 15, "POSITION" : 16,
"NORMAL" : 16 "NORMAL" : 17,
"TEXCOORD_0" : 18
}, },
"indices" : 17, "indices" : 19,
"material" : 5 "material" : 0
},
{
"attributes" : {
"POSITION" : 18,
"NORMAL" : 19
},
"indices" : 20,
"material" : 6
} }
] ]
} }
], ],
"textures" : [
{
"sampler" : 0,
"source" : 0
}
],
"images" : [
{
"mimeType" : "image/png",
"name" : "foliage",
"uri" : "foliage.png"
}
],
"accessors" : [ "accessors" : [
{ {
"bufferView" : 0, "bufferView" : 0,
@@ -271,70 +186,54 @@
}, },
{ {
"bufferView" : 2, "bufferView" : 2,
"componentType" : 5126,
"count" : 624,
"type" : "VEC2"
},
{
"bufferView" : 3,
"componentType" : 5123, "componentType" : 5123,
"count" : 888, "count" : 888,
"type" : "SCALAR" "type" : "SCALAR"
}, },
{
"bufferView" : 3,
"componentType" : 5126,
"count" : 80,
"max" : [
0.018657727167010307,
1.6145683526992798,
0.04910542815923691
],
"min" : [
-0.03639454022049904,
-0.00018746100249700248,
-0.020252957940101624
],
"type" : "VEC3"
},
{ {
"bufferView" : 4, "bufferView" : 4,
"componentType" : 5126, "componentType" : 5126,
"count" : 80, "count" : 500,
"type" : "VEC3"
},
{
"bufferView" : 5,
"componentType" : 5123,
"count" : 114,
"type" : "SCALAR"
},
{
"bufferView" : 6,
"componentType" : 5126,
"count" : 420,
"max" : [ "max" : [
0.2818242609500885, 0.2818242609500885,
1.4256141185760498, 1.6145683526992798,
0.3100934326648712 0.3100934326648712
], ],
"min" : [ "min" : [
-0.3423629105091095, -0.3423629105091095,
0.26863014698028564, -0.00018746100249700248,
-0.3140755295753479 -0.3140755295753479
], ],
"type" : "VEC3" "type" : "VEC3"
}, },
{ {
"bufferView" : 7, "bufferView" : 5,
"componentType" : 5126, "componentType" : 5126,
"count" : 420, "count" : 500,
"type" : "VEC3" "type" : "VEC3"
}, },
{ {
"bufferView" : 8, "bufferView" : 6,
"componentType" : 5126,
"count" : 500,
"type" : "VEC2"
},
{
"bufferView" : 7,
"componentType" : 5123, "componentType" : 5123,
"count" : 540, "count" : 654,
"type" : "SCALAR" "type" : "SCALAR"
}, },
{ {
"bufferView" : 9, "bufferView" : 8,
"componentType" : 5126, "componentType" : 5126,
"count" : 1134, "count" : 1232,
"max" : [ "max" : [
0.45378240942955017, 0.45378240942955017,
0.8412840366363525, 0.8412840366363525,
@@ -347,11 +246,17 @@
], ],
"type" : "VEC3" "type" : "VEC3"
}, },
{
"bufferView" : 9,
"componentType" : 5126,
"count" : 1232,
"type" : "VEC3"
},
{ {
"bufferView" : 10, "bufferView" : 10,
"componentType" : 5126, "componentType" : 5126,
"count" : 1134, "count" : 1232,
"type" : "VEC3" "type" : "VEC2"
}, },
{ {
"bufferView" : 11, "bufferView" : 11,
@@ -362,7 +267,7 @@
{ {
"bufferView" : 12, "bufferView" : 12,
"componentType" : 5126, "componentType" : 5126,
"count" : 932, "count" : 1000,
"max" : [ "max" : [
0.7841669917106628, 0.7841669917106628,
0.7323634624481201, 0.7323634624481201,
@@ -378,22 +283,28 @@
{ {
"bufferView" : 13, "bufferView" : 13,
"componentType" : 5126, "componentType" : 5126,
"count" : 932, "count" : 1000,
"type" : "VEC3" "type" : "VEC3"
}, },
{ {
"bufferView" : 14, "bufferView" : 14,
"componentType" : 5126,
"count" : 1000,
"type" : "VEC2"
},
{
"bufferView" : 15,
"componentType" : 5123, "componentType" : 5123,
"count" : 1536, "count" : 1536,
"type" : "SCALAR" "type" : "SCALAR"
}, },
{ {
"bufferView" : 15, "bufferView" : 16,
"componentType" : 5126, "componentType" : 5126,
"count" : 1196, "count" : 1232,
"max" : [ "max" : [
0.7932196855545044, 0.7932196855545044,
0.8964381814002991, 1.2399932146072388,
0.7817763686180115 0.7817763686180115
], ],
"min" : [ "min" : [
@@ -403,44 +314,22 @@
], ],
"type" : "VEC3" "type" : "VEC3"
}, },
{
"bufferView" : 16,
"componentType" : 5126,
"count" : 1196,
"type" : "VEC3"
},
{ {
"bufferView" : 17, "bufferView" : 17,
"componentType" : 5123, "componentType" : 5126,
"count" : 1806, "count" : 1232,
"type" : "SCALAR" "type" : "VEC3"
}, },
{ {
"bufferView" : 18, "bufferView" : 18,
"componentType" : 5126, "componentType" : 5126,
"count" : 36, "count" : 1232,
"max" : [ "type" : "VEC2"
0.05127303674817085,
1.2399932146072388,
0.05427424982190132
],
"min" : [
-0.05127303674817085,
0.5572494268417358,
-0.05427418276667595
],
"type" : "VEC3"
}, },
{ {
"bufferView" : 19, "bufferView" : 19,
"componentType" : 5126,
"count" : 36,
"type" : "VEC3"
},
{
"bufferView" : 20,
"componentType" : 5123, "componentType" : 5123,
"count" : 54, "count" : 1860,
"type" : "SCALAR" "type" : "SCALAR"
} }
], ],
@@ -457,103 +346,104 @@
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 1776, "byteLength" : 4992,
"byteOffset" : 14976 "byteOffset" : 14976
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 960, "byteLength" : 1776,
"byteOffset" : 16752 "byteOffset" : 19968
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 960, "byteLength" : 6000,
"byteOffset" : 17712 "byteOffset" : 21744
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 228, "byteLength" : 6000,
"byteOffset" : 18672 "byteOffset" : 27744
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 5040, "byteLength" : 4000,
"byteOffset" : 18900 "byteOffset" : 33744
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 5040, "byteLength" : 1308,
"byteOffset" : 23940 "byteOffset" : 37744
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 1080, "byteLength" : 14784,
"byteOffset" : 28980 "byteOffset" : 39052
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 13608, "byteLength" : 14784,
"byteOffset" : 30060 "byteOffset" : 53836
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 13608, "byteLength" : 9856,
"byteOffset" : 43668 "byteOffset" : 68620
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 3600, "byteLength" : 3600,
"byteOffset" : 57276 "byteOffset" : 78476
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 11184, "byteLength" : 12000,
"byteOffset" : 60876 "byteOffset" : 82076
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 11184, "byteLength" : 12000,
"byteOffset" : 72060 "byteOffset" : 94076
},
{
"buffer" : 0,
"byteLength" : 8000,
"byteOffset" : 106076
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 3072, "byteLength" : 3072,
"byteOffset" : 83244 "byteOffset" : 114076
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 14352, "byteLength" : 14784,
"byteOffset" : 86316 "byteOffset" : 117148
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 14352, "byteLength" : 14784,
"byteOffset" : 100668 "byteOffset" : 131932
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 3612, "byteLength" : 9856,
"byteOffset" : 115020 "byteOffset" : 146716
}, },
{ {
"buffer" : 0, "buffer" : 0,
"byteLength" : 432, "byteLength" : 3720,
"byteOffset" : 118632 "byteOffset" : 156572
}, }
],
"samplers" : [
{ {
"buffer" : 0, "magFilter" : 9729,
"byteLength" : 432, "minFilter" : 9987
"byteOffset" : 119064
},
{
"buffer" : 0,
"byteLength" : 108,
"byteOffset" : 119496
} }
], ],
"buffers" : [ "buffers" : [
{ {
"byteLength" : 119604, "byteLength" : 160292,
"uri" : "terrain-bushes.bin" "uri" : "terrain-bushes.bin"
} }
] ]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-2
View File
@@ -47,8 +47,6 @@ func _process(delta):
else: else:
streaming.setup_town(site) streaming.setup_town(site)
streaming.setup_traffic(site) streaming.setup_traffic(site)
if (streaming.towns > 2):
break
print("towns done: ", streaming.towns) print("towns done: ", streaming.towns)
var poly = RoadsData.get_site_polygon_3d(0) var poly = RoadsData.get_site_polygon_3d(0)
var center = Vector3() var center = Vector3()