⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soccer.rsg

📁 ROBOCUP 仿真3D server 源码
💻 RSG
字号:
; -*- mode: lisp; -*-(RubySceneGraph 0 1)(;; define constants, copy values from the ScriptServer Soccer namespace; (define $FieldLength (eval Soccer.FieldLength)) (define $FieldWidth  (eval Soccer.FieldWidth)) (define $BorderExt   (eval Soccer.BorderSize)) (define $GoalWidth   (eval Soccer.GoalWidth)) (define $GoalDepth   (eval Soccer.GoalDepth)) (define $GoalHeight  (eval Soccer.GoalHeight)); height of the field ground plane (define $FieldBaseHeight 4) ; with of the side boundary (define $SideExt 2) ; height of the side boundary (define $SideHeight 1) ; height of a field line (define $LineHeight 0.2) (define $FieldMaterial matGreen) (define $BorderMaterial matYellow) (define $SideMaterial matGrey) (define $LineMaterial matWhite) (define $GoalMaterial matWhite); calc some helper vars (define $FieldBase (eval -1 * $FieldBaseHeight / 2.0)) (define $LineBase 0) (define $FieldHalfLength (eval $FieldLength / 2.0)) (define $FieldHalfWidth  (eval $FieldWidth / 2.0)) (define $GoalHalfWidth   (eval $GoalWidth / 2.0)) (define $GoalHalfHeight  (eval $GoalHeight / 2.0)) (define $GoalHalfDepth   (eval $GoalDepth / 2.0)) (define $HalfBorderExt   (eval $BorderExt / 2.0)) (define $BorderLength    (eval $FieldHalfLength + $HalfBorderExt)) (define $BorderWidth     (eval $FieldHalfWidth + $HalfBorderExt)) (define $SideLength      (eval $FieldHalfLength + $BorderExt)) (define $SideWidth       (eval $FieldHalfWidth  + $BorderExt))  (define $LineWidth       (eval $FieldWidth - $LineHeight))   (define $BarDiameter     $LineHeight) (define $BarRadius       (eval $BarDiameter / 2.0));; construct playing field;; add lights (node Transform       (setLocalPos -10 10 10)       (node Light	     (setDiffuse 1.0 1.0 1.0 1.0)	     (setSpecular 0.1 0.1 0.1 1.0)	     (setAmbient 0.8 0.8 0.8 1.0)	     )       ); add lights (node Transform       (setLocalPos 10 -10 10)       (node Light	     (setDiffuse 1.0 1.0 1.0 1.0)	     (setSpecular 0.1 0.1 0.1 1.0)	     (setAmbient 0.0 0.0 0.0 1.0)	     )       ); create the base plane (node Transform       (setLocalPos 0 0 $FieldBase)       (node Box	     (setMaterial $FieldMaterial)	     (setExtents $FieldLength $FieldWidth $FieldBaseHeight)	     )       (node PlaneCollider	     (setParams 0 0 1.0 0)	     (node ContactJointHandler		   (setContactBounceMode false)		   (setContactSlipMode true)		   (setContactSlip 0.1 0.1)		   (setContactSoftERPMode true)		   (setContactSoftERP 0.2)		   (setContactSoftCFM true)		   (setContactSoftCFM 0.01)		   )	     )       ); create box collider around playing field (node BoxCollider       (setName FieldBox)       (setPosition 0 0 20)       (setBoxLengths $FieldLength $FieldWidth 40)       (node RecorderHandler 	     (setName recorder)	     )         ); create the left goal (node Transform       (setName GoalBoxL)       (setLocalPos (eval -1 * (eval $FieldHalfLength + $GoalHalfDepth)) 0 $GoalHalfHeight)       (node BoxCollider             (setBoxLengths $GoalDepth $GoalWidth $GoalHeight)	     (node ContactJointHandler		    (setContactBounceMode false)	            )	     )       (node RecorderHandler              (setName recorder)	     )         )       ; create the goal bar on top of the goal (left goal) (node Transform       (setLocalPos (eval -1 * (eval $FieldHalfLength + $GoalHalfDepth) + $LineHeight)                                0			       (eval $GoalHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth (eval $GoalWidth - 0.1) $BarDiameter)	     (setMaterial $GoalMaterial)	     )	(node BoxCollider       	     (setBoxLengths $GoalDepth (eval $GoalWidth - 0.1) $BarDiameter)	     )                   )          ; create the left goal post (left goal) (node Transform       (setLocalPos (eval -1 * (eval $FieldHalfLength + $GoalHalfDepth) + $LineHeight)                                (eval -1 * (eval $GoalHalfWidth + $BarRadius))			       (eval $GoalHalfHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth $BarDiameter $GoalHeight)	     (setMaterial $GoalMaterial)	     )       (node BoxCollider       	     (setBoxLengths $GoalDepth $BarDiameter $GoalHeight)	     ) 	                   )  ; create the right goal post (left goal) (node Transform       (setLocalPos (eval -1 * (eval $FieldHalfLength + $GoalHalfDepth) + $LineHeight)                                (eval $GoalHalfWidth + $BarRadius)			       (eval $GoalHalfHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth $BarDiameter $GoalHeight)	     (setMaterial $GoalMaterial)	     )       (node BoxCollider       	     (setBoxLengths $GoalDepth $BarDiameter $GoalHeight)	     )              )   ; create the right goal (node Transform       (setName GoalBoxR)       (setLocalPos (eval $FieldHalfLength + $GoalHalfDepth) 0 $GoalHalfHeight)       (node BoxCollider       	     (setBoxLengths $GoalDepth $GoalWidth $GoalHeight)	     (node ContactJointHandler		    (setContactBounceMode false)	            )	     )       (node RecorderHandler              (setName recorder)	     )         )       ; create the goal bar on top of the goal (right goal) (node Transform       (setLocalPos (eval (eval $FieldHalfLength + $GoalHalfDepth) - $LineHeight)                                0			       (eval $GoalHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth (eval $GoalWidth - 0.1) $BarDiameter)	     (setMaterial $GoalMaterial)	     )	(node BoxCollider       	     (setBoxLengths $GoalDepth (eval $GoalWidth - 0.1) $BarDiameter)	     )              )          ; create the left goal post (right goal) (node Transform       (setLocalPos (eval (eval $FieldHalfLength + $GoalHalfDepth) - $LineHeight)                                (eval -1 * (eval $GoalHalfWidth + $BarRadius))			       (eval $GoalHalfHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth $BarDiameter $GoalHeight)	     (setMaterial $GoalMaterial)	     )	(node BoxCollider       	     (setBoxLengths $GoalDepth $BarDiameter $GoalHeight)	     )              )  ; create the right goal post (right goal) (node Transform       (setLocalPos (eval (eval $FieldHalfLength + $GoalHalfDepth) - $LineHeight)                                (eval $GoalHalfWidth + $BarRadius)			       (eval $GoalHalfHeight + $BarRadius)			       )       (node Box       	     (setExtents $GoalDepth $BarDiameter $GoalHeight)	     (setMaterial $GoalMaterial)	     )	(node BoxCollider       	     (setBoxLengths $GoalDepth $BarDiameter $GoalHeight)	     )              )   ; create left side (node Transform       (setLocalPos (eval -1 * $SideLength) 0 0)       (node Box	     (setMaterial $SideMaterial)	     (setExtents $SideHeight (eval $FieldWidth + 2 * $BorderExt) $SideExt)	     )        (node PlaneCollider	     (setParams 1.0 0 0 (eval -1 * $SideLength))	     )       ); create right side (node Transform       (setLocalPos $SideLength 0 0)       (node Box	     (setMaterial $SideMaterial)	     (setExtents $SideHeight (eval $FieldWidth + 2 * $BorderExt) $SideExt)	     )        (node PlaneCollider	     (setParams -1.0 0 0 (eval -1 * $SideLength))	     )       ); create back side (node Transform       (setLocalPos 0 $SideWidth 0)       (node Box	     (setMaterial $SideMaterial)	     (setExtents (eval $FieldLength + 2 * $BorderExt) $SideHeight $SideExt)	     )        (node PlaneCollider	     (setParams 0 -1.0 0 (eval -1 * $SideWidth))	     )       ); create front side (node Transform       (setLocalPos 0 (eval -1 * $SideWidth) 0)       (node Box	     (setMaterial $SideMaterial)	     (setExtents (eval $FieldLength + 2 * $BorderExt) $SideHeight $SideExt)	     )        (node PlaneCollider	     (setParams 0 1.0 0 (eval -1 * $SideWidth))	     )       ); create middle line (node Transform       (setLocalPos 0 0 $LineBase)       (node Box	     (setExtents $LineHeight $LineWidth $LineHeight)	     (setMaterial $LineMaterial)	     )       ); create front line (node Transform       (setLocalPos 0 (eval -1 * $FieldHalfWidth) $LineBase)       (node Box	     (setExtents $FieldLength $LineHeight $LineHeight)	     (setMaterial $LineMaterial)	     )       ); create back line (node Transform       (setLocalPos 0 $FieldHalfWidth $LineBase)       (node Box	     (setExtents $FieldLength $LineHeight $LineHeight)	     (setMaterial $LineMaterial)	     )       ); create left line (node Transform       (setLocalPos (eval -1 * $FieldHalfLength) 0 $LineBase)       (node Box	     (setExtents $LineHeight $LineWidth $LineHeight)	     (setMaterial $LineMaterial)	     )       ); create right line (node Transform       (setLocalPos $FieldHalfLength 0 $LineBase)       (node Box	     (setExtents $LineHeight $LineWidth $LineHeight)	     (setMaterial $LineMaterial)	     )       ); create left outer field (node Transform       (setLocalPos (eval -1 * $BorderLength) 0 $FieldBase)       (node Box	     (setMaterial $BorderMaterial)	     (setExtents $BorderExt $FieldWidth $FieldBaseHeight)	     )       ); create right outer field (node Transform       (setLocalPos $BorderLength 0 $FieldBase)       (node Box	     (setMaterial $BorderMaterial)	     (setExtents $BorderExt $FieldWidth $FieldBaseHeight)	     )       ); create front outer field (node Transform       (setLocalPos 0 (eval -1 * $BorderWidth) $FieldBase)       (node Box	     (setMaterial $BorderMaterial)	     (setExtents (eval $FieldLength + 2 * $BorderExt) $BorderExt $FieldBaseHeight)	     )       ); create back outer field (node Transform       (setLocalPos 0 $BorderWidth $FieldBase)       (node Box	     (setMaterial $BorderMaterial)	     (setExtents (eval $FieldLength + 2 * $BorderExt) $BorderExt $FieldBaseHeight)	     )       );;;; add flags;;; mark the soccer field with 4 field flags (importScene rsg/agent/flag.rsg 	      (eval -1 * $FieldHalfLength)  	      $FieldHalfWidth	      0 	      Flag_1_l matRed	      ) (importScene rsg/agent/flag.rsg 	      (eval -1 * $FieldHalfLength) 	      (eval -1 * $FieldHalfWidth)	      0	      Flag_2_l matRed	      ) (importScene rsg/agent/flag.rsg 	      $FieldHalfLength 	      $FieldHalfWidth 	      0 	      Flag_1_r matBlue	      ) (importScene rsg/agent/flag.rsg 	      $FieldHalfLength 	      (eval -1 * $FieldHalfWidth) 	      0 	      Flag_2_r matBlue	      )	      	        ; mark the left goal (importScene rsg/agent/flag.rsg	      (eval -1 * $FieldHalfLength)	      (eval -1 * $GoalHalfWidth)	      0	      Goal_1_l matRed	      ) (importScene rsg/agent/flag.rsg	      (eval -1 * $FieldHalfLength)	      $GoalHalfWidth	      0	      Goal_2_l matRed	      ); mark the right goal (importScene rsg/agent/flag.rsg	      $FieldHalfLength	      (eval -1 * $GoalHalfWidth)	      0	      Goal_1_r matBlue	      ) (importScene rsg/agent/flag.rsg	      $FieldHalfLength	      $GoalHalfWidth	      0	      Goal_2_r matBlue	      )	      ;;;; add the ball;; (importScene rsg/agent/ball.rsg) )

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -