First commit

This commit is contained in:
2025-11-07 11:39:23 +00:00
commit 4fb3471833
281 changed files with 6610 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
#VRML_SIM R2023b utf8
# template language: javascript
PROTO Arena [
field SFVec2f size 1 1
field SFColor wallColour 0.095395215 0.22841774 0.8000001
field MFString floorTexture []
field SFBool locked FALSE
] {
Group {
children [
DEF ARENA_WALLS Group {
children [
Solid { # North Wall
translation 0 %<= -(fields.size.value.y / 2 + 0.075) >% 0.15
children [
DEF NORTH_WALL Shape {
appearance DEF WALL_COLOUR PBRAppearance {
baseColor IS wallColour
roughness 1
metalness 0
}
geometry Box {
size %<= fields.size.value.x >% 0.15 0.3
}
}
]
name "North Wall"
locked IS locked
}
Solid { # East Wall
translation %<= -(fields.size.value.x / 2 + 0.075) >% 0 0.15
children [
DEF EAST_WALL Shape {
appearance USE WALL_COLOUR
geometry Box {
size 0.15 %<= fields.size.value.y + 0.3 >% 0.3
}
}
]
name "East Wall"
locked IS locked
}
Solid { # West Wall
translation %<= fields.size.value.x / 2 + 0.075 >% 0 0.15
children [USE EAST_WALL]
name "West Wall"
locked IS locked
}
Solid { # South Wall
translation 0 %<= fields.size.value.y / 2 + 0.075 >% 0.15
children [USE NORTH_WALL]
name "South Wall"
locked IS locked
}
]
}
DEF ARENA_BOUNDING Group {
children [
Solid { # Floor
translation 0 -0.002 0
rotation 0 0 1 3.1416
children [
DEF FLOOR Shape {
appearance Appearance {
material Material {
ambientIntensity 0
}
texture ImageTexture {
url IS floorTexture
repeatS FALSE
repeatT FALSE
filtering 1
}
}
geometry Plane {
size IS size
}
}
]
name "Floor"
boundingObject Plane {
size IS size
}
locked IS locked
}
Solid { # Ceiling
rotation 1 0 0 3.1419
translation 0 0 2
boundingObject Plane {
size IS size
}
name "Top boundary"
locked IS locked
}
Solid { # North bound
rotation 1 0 0 -1.5708
translation 0 %<= -fields.size.value.y / 2 >% 1
boundingObject Plane {
size %<= fields.size.value.x >% 2
}
name "North boundary"
locked IS locked
}
Solid { # East bound
rotation 0 -1 0 -1.5708
translation %<= -fields.size.value.x / 2 >% 0 1
boundingObject Plane {
size 2 %<= fields.size.value.y >%
}
name "East boundary"
locked IS locked
}
Solid { # South bound
rotation 1 0 0 1.5708
translation 0 %<= fields.size.value.y / 2 >% 1
boundingObject Plane {
size %<= fields.size.value.x >% 2
}
name "South boundary"
locked IS locked
}
Solid { # West bound
rotation 0 -1 0 1.5708
translation %<= fields.size.value.x / 2 >% 0 1
boundingObject Plane {
size 2 %<= fields.size.value.y >%
}
name "West boundary"
locked IS locked
}
]
}
]
}
}

View File

@@ -0,0 +1,50 @@
#VRML_SIM R2023b utf8
# template language: javascript
PROTO Deck [
field SFVec2f size 1 1
field SFVec3f translation 0 0 0.001
field SFRotation rotation 1 0 0 0
field SFFloat height 0.17
field SFColor sideColour 1 1 1
field SFColor topColour 0.1 0.1 0.1
field SFBool locked FALSE
field SFString name ""
] {
Solid {
translation IS translation
rotation IS rotation
children [
Shape {
appearance PBRAppearance {
baseColor IS sideColour
roughness 1
metalness 0.5
}
geometry DEF DECK Box {
size %<= fields.size.value.x >% %<= fields.size.value.y >% %<= fields.height.value >%
}
}
Solid {
translation 0 0 %<= fields.height.value / 2 + 0.002 >%
children [
Shape {
appearance PBRAppearance {
baseColor IS topColour
roughness 1
metalness 0
}
geometry Plane {
size %<= fields.size.value.x >% %<= fields.size.value.y >%
}
castShadows FALSE
}
]
name "Top of deck"
}
]
boundingObject USE DECK
name IS name
locked IS locked
}
}

View File

@@ -0,0 +1,76 @@
#VRML_SIM R2023b utf8
# template language: javascript
# tags: nonDeterministic
EXTERNPROTO "../props/Marker.proto"
PROTO Pillar [
field SFVec3f translation 0 0 0
field SFRotation rotation 0 1 0 0
field SFVec3f size 0.13 0.13 0.13
field SFVec2f {0.08 0.08, 0.15 0.15, 0.2 0.2} marker_size 0.08 0.08
field SFFloat marker_height 0.065
field SFColor colour 0.9 0.9 0.9
field SFString marker "0"
field SFString model ""
field MFString texture_url []
]
{
Pose {
translation IS translation
rotation IS rotation
children [
Solid {
translation 0 0 %<= fields.size.value.z / 2 >%
children [
Shape {
appearance DEF PILLAR_APPEARANCE PBRAppearance {
baseColor IS colour
metalness 0
roughness 1
}
geometry DEF PILLAR_GEOMETRY Box {
size IS size
}
}
Marker {
translation 0 %<= fields.size.value.y / 2 + 0.001 >% %<= fields.marker_height.value - (fields.size.value.z / 2) >%
rotation 1 0 0 -1.5708
size IS marker_size
name "front"
model IS marker
texture_url IS texture_url
}
Marker {
translation 0 %<= -(fields.size.value.y / 2 + 0.001) >% %<= fields.marker_height.value - (fields.size.value.z / 2) >%
rotation 1 0 0 1.5708
size IS marker_size
name "back"
model IS marker
texture_url IS texture_url
}
Marker {
translation %<= fields.size.value.x / 2 + 0.001 >% 0 %<= fields.marker_height.value - (fields.size.value.z / 2) >%
rotation 0 1 0 1.5708
size IS marker_size
name "side-1"
model IS marker
texture_url IS texture_url
}
Marker {
translation %<= -(fields.size.value.x / 2 + 0.001) >% 0 %<= fields.marker_height.value - (fields.size.value.z / 2) >%
rotation 0 1 0 -1.5708
size IS marker_size
name "side-2"
model IS marker
texture_url IS texture_url
}
]
name IS model
model IS model
boundingObject USE PILLAR_GEOMETRY
locked TRUE
}
]
}
}

View File

@@ -0,0 +1,68 @@
#VRML_SIM R2023b utf8
# template language: javascript
EXTERNPROTO "https://raw.githubusercontent.com/cyberbotics/webots/R2023b/projects/objects/geometries/protos/Extrusion.proto"
PROTO TriangleDeck [
field SFVec2f size 1 1
field SFVec3f translation 0 0 0.001
field SFRotation rotation 1 0 0 0
field SFFloat height 0.17
field SFColor sideColour 1 1 1
field SFColor topColour 0.1 0.1 0.1
field SFBool locked FALSE
field SFString name ""
] {
Pose {
translation IS translation
rotation IS rotation
children [
Solid {
translation 0 0 %<= -fields.height.value / 2 + 0.002 >%
children [
Shape {
appearance PBRAppearance {
baseColor IS sideColour
roughness 1
metalness 0.5
}
geometry DEF DECK Extrusion {
crossSection [0.5 0.5, 0.5 -0.5, -0.5 0.5, 0.5 0.5]
scale %<= fields.size.value.x >% %<= fields.size.value.y >%
spine [0 0 0, 0 0 %<= fields.height.value >%]
splineSubdivision 1
}
}
Solid {
translation 0 0 %<= fields.height.value + 0.002 >%
children [
Shape {
appearance PBRAppearance {
baseColor IS topColour
roughness 1
metalness 0
}
geometry IndexedFaceSet {
coord Coordinate {
point [
%<= -fields.size.value.x / 2 >% %<= -fields.size.value.y / 2 >% 0
%<= fields.size.value.x / 2 >% %<= -fields.size.value.y / 2 >% 0
%<= -fields.size.value.x / 2 >% %<= fields.size.value.y / 2 >% 0
]
}
coordIndex [
0 1 2 0
]
}
castShadows FALSE
}
]
name "Top of deck"
}
]
boundingObject USE DECK
name IS name
locked IS locked
}
]
}
}