Česky
Kamil Dudka

RRV - Radiosity Renderer and Visualizer (C++, OpenGL)

File detail

Name:Downloadroom3.xml [Download]
Location: rrv > scene > macro
Size:4.1 KB
Last modification:2022-09-09 13:06

Source code

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE scene SYSTEM "http://dudka.cz/dtd/scene.dtd">
<scene>
	<head>
		<objectdef name="xyplane">
			<triangleset name="first" reflectivity=".9,.9,.9">
				<triangle>
					<vertex x="10.0"  y="-10.0" z="0.0"/>
					<vertex x="10.0"  y="10.0"  z="0.0"/>
					<vertex x="-10.0" y="-10.0" z="0.0"/>
				</triangle>
				<trianglenext>
					<vertex x="-10.0" y="10.0"  z="0.0"/>
				</trianglenext>
			</triangleset>
		</objectdef>
		<objectdef name="xyplane-green">
			<triangleset reflectivity=".6,.6,.6">
				<triangle>
					<vertex x="10.0"  y="-10.0" z="0.0"/>
					<vertex x="10.0"  y="10.0"  z="0.0"/>
					<vertex x="-10.0" y="-10.0" z="0.0"/>
				</triangle>
				<trianglenext>
					<vertex x="-10.0" y="10.0"  z="0.0"/>
				</trianglenext>
			</triangleset>
		</objectdef>
		<objectdef name="black-barrel">
			<barrel reflectivity='.1,.1,.1'/>
		</objectdef>
		<objectdef name="light-source">
			<cuboid emission='1,1,1'/>
		</objectdef>
    <objectdef name="bulb-barrel">
      <barrel reflectivity="1,1,.8"/>
    </objectdef>
    <objectdef name="bulb-globe">
      <globe emission="1,1,.9"/>
    </objectdef>
		<objectdef name='teapot'>
			<teapot reflectivity='.8,.8,0'/>
		</objectdef>
    <objectdef name="pillar">
      <cuboid reflectivity=".9,.9,.9"/>
    </objectdef>
    <objectdef name="table">
      <cuboid reflectivity=".3,.3,.9"/>
    </objectdef>
	</head>
	<body>
		<apply-macro name="viewScene"/>
 
		<!-- Scene definition -->
		<macro name="scene">
			<!-- Room -->
			<apply-macro name="room"/>
 
      <!-- Pillars -->
      <translate dx='5'>
        <apply-macro name="v-pillar"/>
      </translate>
      <translate dz='5'>
        <apply-macro name="v-pillar"/>
      </translate>
 
      <!-- Table -->
      <translate dx='-3' dy='-7' dz='-3'>
        <scale dx='8' dy='4' dz='8'>
          <object name="table"/>
        </scale>
      </translate>
 
      <!-- Teapot -->
      <translate dx='-3' dy='-5' dz='-3'>
        <scale dx='2' dy='1.5' dz='2'>
          <rotate angle='-30' dy='1'>
            <object name='teapot'/>
          </rotate>
        </scale>
      </translate>
 
      <!-- Lights -->
      <translate dy='10'>
        <translate dx='-5' dz='5'>
          <apply-macro name="bulb"/>
        </translate>
        <translate dx='5' dz='-5'>
          <apply-macro name="bulb"/>
        </translate>
      </translate>
      <translate dx='-7' dy='-3' dz='-10'>
        <rotate angle='90' dx='-1'>
          <scale dx='.7' dy='.5' dz='.7'>
            <apply-macro name="bulb"/>
          </scale>
        </rotate>
      </translate>
		</macro>
 
		<!-- View definition -->
		<macro name="viewScene">
			<!--<translate dx='-2'>

				<rotate angle='60' dy='1'>
					<scale dx='1.5' dy='1.5' dz='1.8'>-->
						<apply-macro name="scene"/>					
					<!--</scale>

				</rotate>
			</translate>-->
		</macro>
 
		<!-- Room definition -->
		<macro name="room">
			<translate dx='10'>
				<rotate angle="90" dx="0" dy="1" dz="0">
					<object name="xyplane"/>
				</rotate>
			</translate>
			<translate dx='-10'>
				<rotate angle="90" dx="0" dy="-1" dz="0">
					<object name="xyplane"/>
				</rotate>
			</translate>
			<translate dz='-10'>
					<object name="xyplane"/>
			</translate>
			<translate dz='10'>
				<rotate angle="180" dx="0" dy="1" dz="0">
					<object name="xyplane"/>
				</rotate>
			</translate>
			<translate dy='10'>
				<rotate angle="90" dx="1" dy="0" dz="0">
					<object name="xyplane"/>
				</rotate>
			</translate>
			<translate dy='-10'>
				<rotate angle="90" dx="-1" dy="0" dz="0">
					<object name="xyplane"/>
<!-- 					<object name="xyplane-green"/>
 -->
				</rotate>
			</translate>
		</macro>
 
    <macro name="bulb">
      <scale dx="5" dy="5" dz="5">
        <translate dy='-.5'>
          <translate dy='-.5'>
            <object name="bulb-globe"/>
          </translate>
          <scale dx='.5' dy='1' dz='.5'>
            <object name="bulb-barrel"/>
          </scale>
        </translate>
      </scale>
    </macro>
 
    <macro name="v-pillar">
      <scale dx="3" dy="20" dz="3">
        <object name="pillar"/>
      </scale>
    </macro>
 
	</body>
</scene>