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

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

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.

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, "metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009 "roughnessFactor" : 0.6545454263687134
}
},
{
"doubleSided" : true,
"name" : "Wood",
"pbrMetallicRoughness" : {
"baseColorFactor" : [
0.12234099954366684,
0.05628800019621849,
0.04760900139808655,
1
],
"metallicFactor" : 0,
"roughnessFactor" : 0.6732679605484009
}
},
{
"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.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

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()