在前一篇[[4.座標與旋轉]]中,我們創建了幾個形狀,並且可以依照所想的安排這些形狀的位置。或許有人已經可以拼湊出一些模型,這很好,但不夠好看--我們的模型都只有單一顏色,外觀上樸素許多。 本篇的動作並非必要,也不會影響URDF的運作,但可以讓心情愉快很多(? 在URDF中,我們可以對每一個link個別指定顏色--在模型中會稱之為材質(materials)。URDF給出的材質基本上只有RGB三通道+alpha(透明度),因此使用上不會多複雜。 我們將前面的URDF加上一點點敘述: ```XML <?xml version="1.0"?> <robot name="kotori"> <material name="blue"> <color rgba="0 0 0.8 1"/> </material> <material name="white"> <color rgba="1 1 1 1"/> </material> <link name="base_link"> <visual> <geometry> <cylinder length="0.6" radius="0.2"/> </geometry> <material name="blue"/> </visual> </link> <link name="right_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_right_leg" type="fixed"> <parent link="base_link"/> <child link="right_leg"/> <origin xyz="0 -0.22 0.25"/> </joint> <link name="left_leg"> <visual> <geometry> <box size="0.6 0.1 0.2"/> </geometry> <origin rpy="0 1.57075 0" xyz="0 0 -0.3"/> <material name="white"/> </visual> </link> <joint name="base_to_left_leg" type="fixed"> <parent link="base_link"/> <child link="left_leg"/> <origin xyz="0 0.22 0.25"/> </joint> </robot> ``` 然後一樣使用指令,先看看它變成什麼樣子了: ![](https://hackmd.io/_uploads/H1it_HgT2.png) 可以看到,原本的圓柱和長方體都變成其他顏色,另外又多加了一個長方體。 在URDF敘述的最前面我們可以看到使用了material標籤,其需要給出的第一個必要參數是name,也就是這個材質的名稱 ```XML <material name="blue"> ``` 當然,材質的名稱並不代表什麼,底下指定RGBA的具體數值才是真正影響顯示的: ```XML <material name="blue"> <color rgba="0 0 0.8 1"/> ``` 注意這邊的RGB值為0~1之間,因此習慣以255計算的人可能要適應一下。 而定義完材質後,在link中使用也是使用material標籤指定。