collada_scene: render ship20

This commit is contained in:
Zack Buhman 2026-02-02 16:40:07 -06:00
parent fcbaf7ab66
commit edd9a92018
20 changed files with 1997 additions and 60 deletions

View File

@ -55,6 +55,7 @@ SCENES = \
src/scenes/curve_interpolation/curve_interpolation.cpp
include curve_interpolation.mk
include ship20.mk
RC_FILES = $(wildcard rc/*.rc)
@ -91,7 +92,8 @@ OBJS = \
$(BUILD_TYPE)/dds_validate.obj \
$(BUILD_TYPE)/collada.obj \
$(BUILD_TYPE)/collada_scene.obj \
$(BUILD_TYPE)/scenes/curve_interpolation/curve_interpolation.obj
$(BUILD_TYPE)/scenes/curve_interpolation/curve_interpolation.obj \
$(BUILD_TYPE)/scenes/ship20/ship20.obj
$(BUILD_TYPE)/d3d10.exe: $(OBJS)
@mkdir -p $(@D)

View File

@ -3,6 +3,11 @@ image/american_cherry.DDS: C:/Program\ Files/Common\ Files/Autodesk\ Shared/Mate
texconv10.exe -f BC1_UNORM -nologo "$<"
mv "$(<:.png=.DDS)" "$@"
IMAGES += image/Masonry.Unit\ Masonry.Glass\ Block.Square.Stack.DDS
image/Masonry.Unit\ Masonry.Glass\ Block.Square.Stack.DDS: C:/Program\ Files/Common\ Files/Autodesk\ Shared/Materials/Textures/2/Mats/Masonry.Unit\ Masonry.Glass\ Block.Square.Stack.jpg
texconv10.exe -f BC1_UNORM -nologo "$<"
mv "$(<:.jpg=.DDS)" "$@"
IMAGES += image/102.DDS
image/102.DDS: C:/Program\ Files/Common\ Files/Autodesk\ Shared/Materials/Textures/3/Mats/102.png
texconv10.exe -f BC1_UNORM -nologo "$<"

View File

@ -0,0 +1,3 @@
namespace ship20 {
extern collada::descriptor const descriptor;
}

View File

@ -1,4 +1,5 @@
_AMERICAN_CHERRY_PNG RCDATA "image/american_cherry.DDS"
_MASONRY_UNIT_MASONRY_GLASS_BLOCK_SQUARE_STACK_JPG RCDATA "image/Masonry.Unit Masonry.Glass Block.Square.Stack.DDS"
_102_PNG RCDATA "image/102.DDS"
_FINISHES_FLOORING_TILE_SQUARE_MEDIUM_BLUE_PNG RCDATA "image/Finishes.Flooring.Tile.Square.Medium Blue.DDS"
_SITEWORK_PLANTING_GRASS_BERMUDA1_JPG RCDATA "image/SiteWork.Planting.Grass.Bermuda1.DDS"

View File

@ -14,3 +14,7 @@ RES_COLLADA_SCENE_FXO RCDATA "collada_scene.fxo"
RES_MODELS_CURVE_INTERPOLATION_VTX RCDATA "scenes/curve_interpolation/curve_interpolation.vtx"
RES_MODELS_CURVE_INTERPOLATION_IDX RCDATA "scenes/curve_interpolation/curve_interpolation.idx"
RES_MODELS_CURVE_INTERPOLATION_VJW RCDATA "scenes/curve_interpolation/curve_interpolation.vjw"
RES_SCENES_SHIP20_VTX RCDATA "scenes/ship20/ship20.vtx"
RES_SCENES_SHIP20_IDX RCDATA "scenes/ship20/ship20.idx"
RES_SCENES_SHIP20_VJW RCDATA "scenes/ship20/ship20.vjw"

1
rc/ship20.rc Normal file
View File

@ -0,0 +1 @@
_0_SHIPPLE2_PNG RCDATA "image/0_shipple2.DDS"

View File

@ -6,8 +6,8 @@
<authoring_tool>OpenCOLLADA for 3ds Max; Version: 1.6; Revision: 68</authoring_tool>
<source_data>file:///C:/cygwin/home/bilbo/d3d10/scenes/curve_interpolation/curve_interpolation.max</source_data>
</contributor>
<created>2026-01-30T14:43:57</created>
<modified>2026-01-30T14:43:57</modified>
<created>2026-02-01T17:48:55</created>
<modified>2026-02-01T17:48:55</modified>
<unit name="inch" meter="0.0254"/>
<up_axis>Z_UP</up_axis>
</asset>
@ -957,6 +957,72 @@
</technique>
</extra>
</effect>
<effect id="Material__21">
<profile_COMMON>
<newparam sid="Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg-surface">
<surface type="2D">
<init_from>Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg</init_from>
</surface>
</newparam>
<newparam sid="Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg-sampler">
<sampler2D>
<source>Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg-surface</source>
</sampler2D>
</newparam>
<technique sid="common">
<blinn>
<emission>
<color>0 0 0 1</color>
</emission>
<ambient>
<color>0.588 0.588 0.588 1</color>
</ambient>
<diffuse>
<texture texture="Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg-sampler" texcoord="CHANNEL1"/>
</diffuse>
<specular>
<color>0 0 0 1</color>
</specular>
<shininess>
<float>10</float>
</shininess>
<reflective>
<color>0 0 0 1</color>
</reflective>
<transparent opaque="A_ONE">
<color>1 1 1 1</color>
</transparent>
<transparency>
<float>1</float>
</transparency>
</blinn>
</technique>
</profile_COMMON>
<extra>
<technique profile="OpenCOLLADA3dsMax">
<extended_shader>
<opacity_type sid="opacity_type" type="int">0</opacity_type>
<falloff_type sid="falloff_type" type="int">0</falloff_type>
<falloff sid="falloff" type="float">0</falloff>
<index_of_refraction sid="index_of_refraction" type="float">1.5</index_of_refraction>
<wire_size sid="wire_size" type="float">1</wire_size>
<wire_units sid="wire_units" type="int">0</wire_units>
<apply_reflection_dimming sid="apply_reflection_dimming" type="bool">0</apply_reflection_dimming>
<dim_level sid="dim_level" type="float">0</dim_level>
<reflection_level sid="reflection_level" type="float">3</reflection_level>
</extended_shader>
<shader>
<ambient_diffuse_texture_lock sid="ambient_diffuse_texture_lock" type="bool">1</ambient_diffuse_texture_lock>
<ambient_diffuse_lock sid="ambient_diffuse_lock" type="bool">1</ambient_diffuse_lock>
<diffuse_specular_lock sid="diffuse_specular_lock" type="bool">0</diffuse_specular_lock>
<use_self_illum_color sid="use_self_illum_color" type="bool">0</use_self_illum_color>
<self_illumination sid="self_illumination" type="float">0</self_illumination>
<specular_level sid="specular_level" type="float">0</specular_level>
<soften sid="soften" type="float">0.1</soften>
</shader>
</technique>
</extra>
</effect>
</library_effects>
<library_materials>
<material id="ColorEffectR26G177B26-material" name="ColorEffectR26G177B26-material">
@ -1010,6 +1076,9 @@
<material id="Material__18_1-material" name="Material__18">
<instance_effect url="#Material__18_1"/>
</material>
<material id="Material__21-material" name="Material__21">
<instance_effect url="#Material__21"/>
</material>
</library_materials>
<library_geometries>
<geometry id="geom-Cube" name="Cube">
@ -1406,6 +1475,62 @@
</triangles>
</mesh>
</geometry>
<geometry id="geom-Pyramid001" name="Pyramid001">
<mesh>
<source id="geom-Pyramid001-positions">
<float_array id="geom-Pyramid001-positions-array" count="18">0 0 10.01329 -11.77238 -7.848255 0 11.77238 -7.848255 0 11.77238 7.848255 0 -11.77238 7.848255 0 0 0 0</float_array>
<technique_common>
<accessor source="#geom-Pyramid001-positions-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="geom-Pyramid001-normals">
<float_array id="geom-Pyramid001-normals-array" count="51">0 -0.7870559 0.6168815 0 -0.7870559 0.6168816 0 -0.7870559 0.6168816 0.6479026 0 0.7617232 0.6479026 0 0.7617232 0.6479026 0 0.7617232 0 0.7870559 0.6168815 0 0.7870559 0.6168816 0 0.7870559 0.6168816 -0.6479026 0 0.7617232 -0.6479026 0 0.7617232 -0.6479026 0 0.7617232 0 0 -0.9999999 0 0 -1 0 0 -0.9999999 0 0 -0.9999999 0 0 -0.9999999</float_array>
<technique_common>
<accessor source="#geom-Pyramid001-normals-array" count="17" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="geom-Pyramid001-map1">
<float_array id="geom-Pyramid001-map1-array" count="33">0.5 1 0 0 0 0 1 0 0 -0.25 0 0 0.75 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0.5 0.5 0 0.5 1 0</float_array>
<technique_common>
<accessor source="#geom-Pyramid001-map1-array" count="11" stride="3">
<param name="S" type="float"/>
<param name="T" type="float"/>
<param name="P" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="geom-Pyramid001-vertices">
<input semantic="POSITION" source="#geom-Pyramid001-positions"/>
</vertices>
<triangles material="Material__21_1" count="8">
<input semantic="VERTEX" source="#geom-Pyramid001-vertices" offset="0"/>
<input semantic="NORMAL" source="#geom-Pyramid001-normals" offset="1"/>
<input semantic="TEXCOORD" source="#geom-Pyramid001-map1" offset="2" set="0"/>
<p>0 0 0 1 1 1 2 2 2 0 3 10 2 4 3 3 5 4 0 6 0 3 7 1 4 8 2 0 9 10 4 10 3 1 11 4 1 12 5 5 13 9 2 14 6 2 14 6 5 13 9 3 15 7 3 15 7 5 13 9 4 16 8 4 16 8 5 13 9 1 12 5</p>
</triangles>
</mesh>
<extra>
<technique profile="OpenCOLLADA3dsMax">
<max_pyramid>
<width sid="width" type="float">23.54476</width>
<depth sid="depth" type="float">15.69651</depth>
<height sid="height" type="float">10.01329</height>
<widthsegments sid="widthsegments" type="int">1</widthsegments>
<depthsegments sid="depthsegments" type="int">1</depthsegments>
<heightsegments sid="heightsegments" type="int">1</heightsegments>
<generateuvs sid="generateuvs" type="int">1</generateuvs>
</max_pyramid>
</technique>
</extra>
</geometry>
</library_geometries>
<library_controllers>
<controller id="geom-Box001-skin1">
@ -1492,6 +1617,9 @@
<image id="american_cherry_png">
<init_from>file:///C:/Program%20Files/Common%20Files/Autodesk%20Shared/Materials/Textures/1/Mats/american_cherry.png</init_from>
</image>
<image id="Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg">
<init_from>file:///C:/Program%20Files/Common%20Files/Autodesk%20Shared/Materials/Textures/2/Mats/Masonry.Unit%20Masonry.Glass%20Block.Square.Stack.jpg</init_from>
</image>
<image id="_02_png">
<init_from>file:///C:/Program%20Files/Common%20Files/Autodesk%20Shared/Materials/Textures/3/Mats/102.png</init_from>
</image>
@ -1514,9 +1642,9 @@
<bind_material>
<technique_common>
<instance_material symbol="Material__15_1" target="#Material__15-material"/>
<instance_material symbol="Material__17_1" target="#Material__17-material"/>
<instance_material symbol="Material__16_1" target="#Material__16-material"/>
<instance_material symbol="Material__18_1" target="#Material__18-material"/>
<instance_material symbol="Material__17_1" target="#Material__17-material"/>
<instance_material symbol="Material__19_1" target="#Material__19-material"/>
<instance_material symbol="Material__20_1" target="#Material__20-material"/>
</technique_common>
@ -1655,8 +1783,8 @@
<bind_material>
<technique_common>
<instance_material symbol="Material__13_1" target="#Material__13-material"/>
<instance_material symbol="Material__15" target="#Material__15_1-material"/>
<instance_material symbol="Material__14_1" target="#Material__14-material"/>
<instance_material symbol="Material__15" target="#Material__15_1-material"/>
<instance_material symbol="Material__16" target="#Material__16_1-material"/>
<instance_material symbol="Material__17" target="#Material__17_1-material"/>
<instance_material symbol="Material__18" target="#Material__18_1-material"/>
@ -1697,6 +1825,29 @@
</technique>
</extra>
</node>
<node id="node-Pyramid001" name="Pyramid001">
<translate sid="translation">10.76371 -13.71933 0.01108826</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<instance_geometry url="#geom-Pyramid001">
<bind_material>
<technique_common>
<instance_material symbol="Material__21_1" target="#Material__21-material">
<bind_vertex_input semantic="CHANNEL1" input_semantic="TEXCOORD" input_set="0"/>
</instance_material>
</technique_common>
</bind_material>
</instance_geometry>
<extra>
<technique profile="OpenCOLLADA">
<cast_shadows sid="cast_shadows" type="bool">1</cast_shadows>
<receive_shadows sid="receive_shadows" type="bool">1</receive_shadows>
<primary_visibility sid="primary_visibility" type="int">1</primary_visibility>
<secondary_visibility sid="secondary_visibility" type="int">1</secondary_visibility>
</technique>
</extra>
</node>
</visual_scene>
</library_visual_scenes>
<library_animations>
@ -2059,6 +2210,258 @@
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.X-input">
<float_array id="node-Pyramid001_translation.X-input-array" count="4">0 0.6333333 1.466667 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.X-input-array" count="4" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.X-output">
<float_array id="node-Pyramid001_translation.X-output-array" count="4">10.76371 10.76371 10.76371 10.76371</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.X-output-array" count="4" stride="1">
<param name="X" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.X-intangent">
<float_array id="node-Pyramid001_translation.X-intangent-array" count="8">0.9997917 10.76371 0.4222434 10.76371 1.188917 10.76371 2.711174 10.76371</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.X-intangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.X-outtangent">
<float_array id="node-Pyramid001_translation.X-outtangent-array" count="8">0.21109 10.76371 0.9110833 10.76371 2.088827 10.76371 3.666564 10.76371</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.X-outtangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.X-interpolation">
<Name_array id="node-Pyramid001_translation.X-interpolation-array" count="4">BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.X-interpolation-array" count="4" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Y-input">
<float_array id="node-Pyramid001_translation.Y-input-array" count="4">0 0.6333333 1.466667 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Y-input-array" count="4" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Y-output">
<float_array id="node-Pyramid001_translation.Y-output-array" count="4">-13.71933 -13.71933 11.03402 -13.71933</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Y-output-array" count="4" stride="1">
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Y-intangent">
<float_array id="node-Pyramid001_translation.Y-intangent-array" count="8">0.9997917 -13.71933 0.4222434 -13.71933 1.188917 11.03402 2.711174 -13.71933</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Y-intangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Y-outtangent">
<float_array id="node-Pyramid001_translation.Y-outtangent-array" count="8">0.21109 -13.71933 0.9110833 -13.71933 2.088827 11.03402 3.666564 -13.71933</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Y-outtangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Y-interpolation">
<Name_array id="node-Pyramid001_translation.Y-interpolation-array" count="4">BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Y-interpolation-array" count="4" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Z-input">
<float_array id="node-Pyramid001_translation.Z-input-array" count="4">0 0.6333333 1.466667 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Z-input-array" count="4" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Z-output">
<float_array id="node-Pyramid001_translation.Z-output-array" count="4">0.01108826 17.80861 17.80861 0.01108826</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Z-output-array" count="4" stride="1">
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Z-intangent">
<float_array id="node-Pyramid001_translation.Z-intangent-array" count="8">0.9997917 0.01108826 0.4222434 17.80861 1.188917 17.80861 2.711174 0.01108826</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Z-intangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Z-outtangent">
<float_array id="node-Pyramid001_translation.Z-outtangent-array" count="8">0.21109 0.01108826 0.9110833 17.80861 2.088827 17.80861 3.666564 0.01108826</float_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Z-outtangent-array" count="4" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_translation.Z-interpolation">
<Name_array id="node-Pyramid001_translation.Z-interpolation-array" count="4">BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_translation.Z-interpolation-array" count="4" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationZ.ANGLE-input">
<float_array id="node-Pyramid001_rotationZ.ANGLE-input-array" count="5">0 1.466667 2.366667 2.8 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationZ.ANGLE-input-array" count="5" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationZ.ANGLE-output">
<float_array id="node-Pyramid001_rotationZ.ANGLE-output-array" count="5">0 0 0 0 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationZ.ANGLE-output-array" count="5" stride="1">
<param name="ANGLE" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationZ.ANGLE-intangent">
<float_array id="node-Pyramid001_rotationZ.ANGLE-intangent-array" count="10">0.9997917 0 0.9778267 0 2.066697 0 2.65557 0 3.155573 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationZ.ANGLE-intangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationZ.ANGLE-outtangent">
<float_array id="node-Pyramid001_rotationZ.ANGLE-outtangent-array" count="10">0.48884 0 1.766637 0 2.511097 0 2.97776 0 3.666564 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationZ.ANGLE-outtangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationZ.ANGLE-interpolation">
<Name_array id="node-Pyramid001_rotationZ.ANGLE-interpolation-array" count="5">BEZIER BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationZ.ANGLE-interpolation-array" count="5" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationY.ANGLE-input">
<float_array id="node-Pyramid001_rotationY.ANGLE-input-array" count="5">0 1.466667 2.366667 2.8 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationY.ANGLE-input-array" count="5" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationY.ANGLE-output">
<float_array id="node-Pyramid001_rotationY.ANGLE-output-array" count="5">0 0 0 0 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationY.ANGLE-output-array" count="5" stride="1">
<param name="ANGLE" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationY.ANGLE-intangent">
<float_array id="node-Pyramid001_rotationY.ANGLE-intangent-array" count="10">0.9997917 0 0.9778267 0 2.066697 0 2.65557 0 3.155573 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationY.ANGLE-intangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationY.ANGLE-outtangent">
<float_array id="node-Pyramid001_rotationY.ANGLE-outtangent-array" count="10">0.48884 0 1.766637 0 2.511097 0 2.97776 0 3.666564 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationY.ANGLE-outtangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationY.ANGLE-interpolation">
<Name_array id="node-Pyramid001_rotationY.ANGLE-interpolation-array" count="5">BEZIER BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationY.ANGLE-interpolation-array" count="5" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationX.ANGLE-input">
<float_array id="node-Pyramid001_rotationX.ANGLE-input-array" count="5">0 1.466667 2.366667 2.8 3.333333</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationX.ANGLE-input-array" count="5" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationX.ANGLE-output">
<float_array id="node-Pyramid001_rotationX.ANGLE-output-array" count="5">0 -69.99999 -175 -235 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationX.ANGLE-output-array" count="5" stride="1">
<param name="ANGLE" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationX.ANGLE-intangent">
<float_array id="node-Pyramid001_rotationX.ANGLE-intangent-array" count="10">0.9997917 0 0.9778267 -69.99999 2.066697 -175 2.65557 -235 3.155573 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationX.ANGLE-intangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationX.ANGLE-outtangent">
<float_array id="node-Pyramid001_rotationX.ANGLE-outtangent-array" count="10">0.48884 0 1.766637 -69.99999 2.511097 -175 2.97776 -235 3.666564 0</float_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationX.ANGLE-outtangent-array" count="5" stride="2">
<param name="X" type="float"/>
<param name="Y" type="float"/>
</accessor>
</technique_common>
</source>
<source id="node-Pyramid001_rotationX.ANGLE-interpolation">
<Name_array id="node-Pyramid001_rotationX.ANGLE-interpolation-array" count="5">BEZIER BEZIER BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#node-Pyramid001_rotationX.ANGLE-interpolation-array" count="5" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<sampler id="node-Cube_translation.X-sampler">
<input semantic="INPUT" source="#node-Cube_translation.X-input"/>
<input semantic="OUTPUT" source="#node-Cube_translation.X-output"/>
@ -2118,6 +2521,48 @@
<input semantic="OUT_TANGENT" source="#node-Bone002_rotationZ.ANGLE-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Bone002_rotationZ.ANGLE-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_translation.X-sampler">
<input semantic="INPUT" source="#node-Pyramid001_translation.X-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_translation.X-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_translation.X-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_translation.X-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_translation.X-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_translation.Y-sampler">
<input semantic="INPUT" source="#node-Pyramid001_translation.Y-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_translation.Y-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_translation.Y-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_translation.Y-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_translation.Y-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_translation.Z-sampler">
<input semantic="INPUT" source="#node-Pyramid001_translation.Z-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_translation.Z-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_translation.Z-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_translation.Z-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_translation.Z-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_rotationZ.ANGLE-sampler">
<input semantic="INPUT" source="#node-Pyramid001_rotationZ.ANGLE-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_rotationZ.ANGLE-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_rotationZ.ANGLE-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_rotationZ.ANGLE-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_rotationZ.ANGLE-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_rotationY.ANGLE-sampler">
<input semantic="INPUT" source="#node-Pyramid001_rotationY.ANGLE-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_rotationY.ANGLE-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_rotationY.ANGLE-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_rotationY.ANGLE-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_rotationY.ANGLE-interpolation"/>
</sampler>
<sampler id="node-Pyramid001_rotationX.ANGLE-sampler">
<input semantic="INPUT" source="#node-Pyramid001_rotationX.ANGLE-input"/>
<input semantic="OUTPUT" source="#node-Pyramid001_rotationX.ANGLE-output"/>
<input semantic="IN_TANGENT" source="#node-Pyramid001_rotationX.ANGLE-intangent"/>
<input semantic="OUT_TANGENT" source="#node-Pyramid001_rotationX.ANGLE-outtangent"/>
<input semantic="INTERPOLATION" source="#node-Pyramid001_rotationX.ANGLE-interpolation"/>
</sampler>
<channel source="#node-Cube_translation.X-sampler" target="node-Cube/translation.X"/>
<channel source="#node-Cube_translation.Y-sampler" target="node-Cube/translation.Y"/>
<channel source="#node-Torus_rotationX.ANGLE-sampler" target="node-Torus/rotationX.ANGLE"/>
@ -2127,6 +2572,12 @@
<channel source="#node-Light_translation.X-sampler" target="node-Light/translation.X"/>
<channel source="#node-Light_translation.Y-sampler" target="node-Light/translation.Y"/>
<channel source="#node-Bone002_rotationZ.ANGLE-sampler" target="node-Bone002/rotationZ.ANGLE"/>
<channel source="#node-Pyramid001_translation.X-sampler" target="node-Pyramid001/translation.X"/>
<channel source="#node-Pyramid001_translation.Y-sampler" target="node-Pyramid001/translation.Y"/>
<channel source="#node-Pyramid001_translation.Z-sampler" target="node-Pyramid001/translation.Z"/>
<channel source="#node-Pyramid001_rotationZ.ANGLE-sampler" target="node-Pyramid001/rotationZ.ANGLE"/>
<channel source="#node-Pyramid001_rotationY.ANGLE-sampler" target="node-Pyramid001/rotationY.ANGLE"/>
<channel source="#node-Pyramid001_rotationX.ANGLE-sampler" target="node-Pyramid001/rotationX.ANGLE"/>
</animation>
</library_animations>
<scene>

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

399
scenes/ship20/ship20.DAE Executable file

File diff suppressed because one or more lines are too long

BIN
scenes/ship20/ship20.idx Normal file

Binary file not shown.

0
scenes/ship20/ship20.vjw Normal file
View File

BIN
scenes/ship20/ship20.vtx Normal file

Binary file not shown.

5
ship20.mk Normal file
View File

@ -0,0 +1,5 @@
IMAGES += image/0_shipple2.DDS
image/0_shipple2.DDS: scenes/ship20/./images/0_shipple2.png
texconv10.exe -f BC1_UNORM -nologo "$<"
mv "$(<:.png=.DDS)" "$@"

View File

@ -209,15 +209,15 @@ namespace collada_scene {
if (FAILED(hr))
return E_FAIL;
hr = LoadVertexBuffer(L"RES_MODELS_CURVE_INTERPOLATION_VTX", &m_pVertexBuffers[0]);
hr = LoadVertexBuffer(L"RES_SCENES_SHIP20_VTX", &m_pVertexBuffers[0]);
if (FAILED(hr))
return E_FAIL;
hr = LoadVertexBuffer(L"RES_MODELS_CURVE_INTERPOLATION_VJW", &m_pVertexBuffers[1]);
hr = LoadVertexBuffer(L"RES_SCENES_SHIP20_VJW", &m_pVertexBuffers[1]);
if (FAILED(hr))
return E_FAIL;
hr = LoadIndexBuffer(L"RES_MODELS_CURVE_INTERPOLATION_IDX", &m_pIndexBuffer);
hr = LoadIndexBuffer(L"RES_SCENES_SHIP20_IDX", &m_pIndexBuffer);
if (FAILED(hr))
return E_FAIL;
@ -378,6 +378,10 @@ namespace collada_scene {
return E_FAIL;
}
DWORD dwResSize = SizeofResource(NULL, hRes);
if (dwResSize == 0) {
*ppVertexBuffer = NULL;
return S_OK;
}
void * pData = LockResource(LoadResource(NULL, hRes));
D3D10_BUFFER_DESC bd;
@ -437,6 +441,8 @@ namespace collada_scene {
XMConvertToRadians(XMVectorGetW(transform.vector)));
case transform_type::SCALE:
return XMMatrixScalingFromVector(transform.vector);
case transform_type::MATRIX:
return transform.matrix;
default:
assert(false);
break;
@ -851,7 +857,7 @@ namespace collada_scene {
g_pViewEyeVariable->SetFloatVector((float *)&eye);
int lights = min(2, m_lightInstancesCount);
int lights = min(4, m_lightInstancesCount);
g_pLightPosVariable->SetFloatVectorArray((float *)m_lightPositions, 0, lights);
g_pLightDirVariable->SetFloatVectorArray((float *)m_lightDirections, 0, lights);
g_pLightColorVariable->SetFloatVectorArray((float *)m_lightColors, 0, lights);

View File

@ -5,9 +5,9 @@ cbuffer cbEveryFrame
float4 ViewEye;
float4 LightPos[2];
float4 LightDir[2];
float4 LightColor[2];
float4 LightPos[4];
float4 LightDir[4];
float4 LightColor[4];
};
cbuffer cbMultiplePerFrame
@ -66,6 +66,12 @@ struct PS_INPUT
float4 WPos : POSITION;
};
struct PS_OUTPUT
{
float4 color0 : SV_TARGET0;
float4 color1 : SV_TARGET1;
};
PS_INPUT VSSkin(VS_INPUT_SKINNED input)
{
PS_INPUT output;
@ -99,38 +105,48 @@ PS_INPUT VS(VS_INPUT input)
output.Pos = mul(output.Pos, Projection);
output.Norm = mul(input.Norm, (float3x3)World);
output.Tex = input.Tex;
output.Tex = float2(input.Tex.x, 1 - input.Tex.y);
output.WPos = world_pos;
return output;
}
float4 PS(PS_INPUT input) : SV_Target
PS_OUTPUT PS(PS_INPUT input)
{
float3 normal = normalize(input.Norm);
float3 view_dir = normalize(ViewEye.xyz - input.WPos.xyz);
float3 color = Emission.xyz;
float3 emissionColor = float3(0, 0, 0);
if (TextureChannel.x >= 0) { // emission
emissionColor = TexEmission.Sample(samLinear, input.Tex).xyz;
} else {
emissionColor = Emission.xyz;
}
float3 diffuseColor;
if (TextureChannel.z >= 0) {
if (TextureChannel.z >= 0) { // diffuse
diffuseColor = TexDiffuse.Sample(samLinear, input.Tex).xyz;
} else {
diffuseColor = Diffuse.xyz;
}
for (int i = 0; i < 2; i++) {
float3 color = emissionColor;
for (int i = 0; i < 4; i++) {
float3 light_dir = normalize(-LightDir[i].xyz);
float diffuse_intensity = max(dot(normal, light_dir), 0.0) + 0.2;
float distance = length(LightPos[i].xyz - input.WPos.xyz);
float attenuation = 1.0 / (0.002 * distance * distance);
float attenuation = 1.0 / (0.00000006 * distance * distance * distance);
color += diffuseColor * diffuse_intensity * LightColor[i].xyz * attenuation;
}
return float4(color.xyz, 1);
PS_OUTPUT output;
output.color0 = float4(color, 1.0);
output.color1 = float4(emissionColor, 1.0);
return output;
}
BlendState DisableBlending

View File

@ -21,6 +21,7 @@
#include "collada_scene.hpp"
#include "scenes/curve_interpolation/curve_interpolation.hpp"
#include "scenes/ship20/ship20.hpp"
HINSTANCE g_hInstance = NULL;
HWND g_hWnd = NULL;
@ -129,7 +130,7 @@ XMFLOAT4 g_vLightColors[2] = {
//
XMVECTOR g_Eye = XMVectorSet(0.0f, -40.0f, 25.0f, 1.0f);
XMVECTOR g_Eye = XMVectorSet(0.0f, -260.0f, 260.0f, 1.0f);
XMVECTOR g_At = XMVectorSet(0.0f, 0.0f, 0.0f, 1.0f);
// collada scene state
@ -208,7 +209,7 @@ int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLi
print("collada_scene::LoadEffect\n");
}
if (FAILED(g_SceneState.load_scene(&curve_interpolation::descriptor))) {
if (FAILED(g_SceneState.load_scene(&ship20::descriptor))) {
print("g_SceneState::load_scene\n");
return 0;
}
@ -283,7 +284,8 @@ HRESULT InitWindow(HINSTANCE hInstance, int nCmdShow)
return E_FAIL;
// create window
RECT rc = { 0, 0, 512, 512 };
//RECT rc = { 0, 0, 512, 512 };
RECT rc = { 0, 0, 1365, 1024 };
AdjustWindowRect(&rc, WS_OVERLAPPEDWINDOW, FALSE);
UINT width = rc.right - rc.left;
UINT height = rc.bottom - rc.top;
@ -1020,6 +1022,18 @@ HRESULT LoadMeshStatic(const Mesh * mesh)
return S_OK;
}
void SetProjection(float width, float height)
{
float fFov = XM_PI * 0.5f;
float fAspect = width / height;
float fNear = 0.1f;
float fFar = 1000.0f;
g_Projection = XMMatrixPerspectiveFovRH(fFov,
fAspect,
fNear,
fFar);
}
HRESULT InitDirect3DDevice()
{
RECT rc;
@ -1105,6 +1119,24 @@ HRESULT InitDirect3DDevice()
g_pd3dDevice->RSSetState(pRState);
//////////////////////////////////////////////////////////////////////
// depth stencil state
//////////////////////////////////////////////////////////////////////
/*
D3D10_DEPTH_STENCIL_DESC dsDesc;
dsDesc.DepthEnable = true;
dsDesc.DepthWriteMask = D3D10_DEPTH_WRITE_MASK_ALL;
dsDesc.DepthFunc = D3D10_COMPARISON_LESS;
dsDesc.StencilEnable = false;
// Create depth stencil state
ID3D10DepthStencilState * pDSState;
g_pd3dDevice->CreateDepthStencilState(&dsDesc, &pDSState);
g_pd3dDevice->OMSetDepthStencilState(pDSState, 1);
*/
//
InitDirect3DViews();
@ -1221,15 +1253,7 @@ HRESULT InitDirect3DDevice()
g_World1 = XMMatrixIdentity();
g_World2 = XMMatrixIdentity();
float fFov = XM_PI * 0.5f;
float fAspect = width / (float)height;
float fNear = 0.1f;
float fFar = 100.0f;
g_Projection = XMMatrixPerspectiveFovLH(fFov,
fAspect,
fNear,
fFar);
SetProjection(width, height);
return S_OK;
}
@ -1260,15 +1284,7 @@ BOOL Resize()
0);
InitDirect3DViews();
float fFov = XM_PI * 0.5f;
float fAspect = width / (float)height;
float fNear = 0.1f;
float fFar = 100.0f;
g_Projection = XMMatrixPerspectiveFovLH(fFov,
fAspect,
fNear,
fFar);
SetProjection(width, height);
return true;
}
@ -1735,8 +1751,7 @@ void Update(float t, float dt)
g_Eye = XMVector4Transform(g_Eye, mTranslateView * mRotateView);
XMVECTOR Up = XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f);
g_View = XMMatrixLookAtLH(g_Eye, g_At, Up);
g_View = XMMatrixLookAtRH(g_Eye, g_At, Up);
}
void RenderVolume(float t)
@ -1818,7 +1833,7 @@ void Render(float t, float dt)
{
// clear
const float ClearColor[4] = { 0.2f, 0.125f, 0.2f, 1.0f };
const float ClearColor[4] = { 0.2f * 0.2f, 0.125f * 0.2f, 0.2f * 0.2f, 1.0f };
g_pd3dDevice->OMSetRenderTargets(1, &g_pRenderTargetView, g_pDepthStencilView);
g_pd3dDevice->ClearRenderTargetView(g_pRenderTargetView, ClearColor);
g_pd3dDevice->ClearDepthStencilView(g_pDepthStencilView, D3D10_CLEAR_DEPTH, 1.0f, 0);
@ -1845,6 +1860,8 @@ void Render(float t, float dt)
g_SceneState.update(t);
g_SceneState.render();
RenderBloom();
RenderFont(dt);
// present

View File

@ -623,6 +623,429 @@ sampler const sampler_node_bone002_rotationz_angle_sampler = {
},
};
float const array_node_pyramid001_translation_x_input_array[] = {
0.0f,
0.6333333f,
1.466667f,
3.333333f,
};
float const array_node_pyramid001_translation_x_output_array[] = {
10.76371f,
10.76371f,
10.76371f,
10.76371f,
};
float const array_node_pyramid001_translation_x_intangent_array[] = {
0.9997917f, 10.76371f,
0.4222434f, 10.76371f,
1.188917f, 10.76371f,
2.711174f, 10.76371f,
};
float const array_node_pyramid001_translation_x_outtangent_array[] = {
0.21109f, 10.76371f,
0.9110833f, 10.76371f,
2.088827f, 10.76371f,
3.666564f, 10.76371f,
};
enum interpolation const array_node_pyramid001_translation_x_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_translation_x_sampler = {
// node_pyramid001_translation_x_input
.input = {
.float_array = array_node_pyramid001_translation_x_input_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_x_output
.output = {
.float_array = array_node_pyramid001_translation_x_output_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_x_intangent
.in_tangent = {
.float_array = array_node_pyramid001_translation_x_intangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_x_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_translation_x_outtangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_x_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_translation_x_interpolation_array,
.count = 4,
.stride = 1,
},
};
float const array_node_pyramid001_translation_y_input_array[] = {
0.0f,
0.6333333f,
1.466667f,
3.333333f,
};
float const array_node_pyramid001_translation_y_output_array[] = {
-13.71933f,
-13.71933f,
11.03402f,
-13.71933f,
};
float const array_node_pyramid001_translation_y_intangent_array[] = {
0.9997917f, -13.71933f,
0.4222434f, -13.71933f,
1.188917f, 11.03402f,
2.711174f, -13.71933f,
};
float const array_node_pyramid001_translation_y_outtangent_array[] = {
0.21109f, -13.71933f,
0.9110833f, -13.71933f,
2.088827f, 11.03402f,
3.666564f, -13.71933f,
};
enum interpolation const array_node_pyramid001_translation_y_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_translation_y_sampler = {
// node_pyramid001_translation_y_input
.input = {
.float_array = array_node_pyramid001_translation_y_input_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_y_output
.output = {
.float_array = array_node_pyramid001_translation_y_output_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_y_intangent
.in_tangent = {
.float_array = array_node_pyramid001_translation_y_intangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_y_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_translation_y_outtangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_y_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_translation_y_interpolation_array,
.count = 4,
.stride = 1,
},
};
float const array_node_pyramid001_translation_z_input_array[] = {
0.0f,
0.6333333f,
1.466667f,
3.333333f,
};
float const array_node_pyramid001_translation_z_output_array[] = {
0.01108826f,
17.80861f,
17.80861f,
0.01108826f,
};
float const array_node_pyramid001_translation_z_intangent_array[] = {
0.9997917f, 0.01108826f,
0.4222434f, 17.80861f,
1.188917f, 17.80861f,
2.711174f, 0.01108826f,
};
float const array_node_pyramid001_translation_z_outtangent_array[] = {
0.21109f, 0.01108826f,
0.9110833f, 17.80861f,
2.088827f, 17.80861f,
3.666564f, 0.01108826f,
};
enum interpolation const array_node_pyramid001_translation_z_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_translation_z_sampler = {
// node_pyramid001_translation_z_input
.input = {
.float_array = array_node_pyramid001_translation_z_input_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_z_output
.output = {
.float_array = array_node_pyramid001_translation_z_output_array,
.count = 4,
.stride = 1,
},
// node_pyramid001_translation_z_intangent
.in_tangent = {
.float_array = array_node_pyramid001_translation_z_intangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_z_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_translation_z_outtangent_array,
.count = 4,
.stride = 2,
},
// node_pyramid001_translation_z_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_translation_z_interpolation_array,
.count = 4,
.stride = 1,
},
};
float const array_node_pyramid001_rotationz_angle_input_array[] = {
0.0f,
1.466667f,
2.366667f,
2.8f,
3.333333f,
};
float const array_node_pyramid001_rotationz_angle_output_array[] = {
0.0f,
0.0f,
0.0f,
0.0f,
0.0f,
};
float const array_node_pyramid001_rotationz_angle_intangent_array[] = {
0.9997917f, 0.0f,
0.9778267f, 0.0f,
2.066697f, 0.0f,
2.65557f, 0.0f,
3.155573f, 0.0f,
};
float const array_node_pyramid001_rotationz_angle_outtangent_array[] = {
0.48884f, 0.0f,
1.766637f, 0.0f,
2.511097f, 0.0f,
2.97776f, 0.0f,
3.666564f, 0.0f,
};
enum interpolation const array_node_pyramid001_rotationz_angle_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_rotationz_angle_sampler = {
// node_pyramid001_rotationz_angle_input
.input = {
.float_array = array_node_pyramid001_rotationz_angle_input_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationz_angle_output
.output = {
.float_array = array_node_pyramid001_rotationz_angle_output_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationz_angle_intangent
.in_tangent = {
.float_array = array_node_pyramid001_rotationz_angle_intangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationz_angle_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_rotationz_angle_outtangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationz_angle_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_rotationz_angle_interpolation_array,
.count = 5,
.stride = 1,
},
};
float const array_node_pyramid001_rotationy_angle_input_array[] = {
0.0f,
1.466667f,
2.366667f,
2.8f,
3.333333f,
};
float const array_node_pyramid001_rotationy_angle_output_array[] = {
0.0f,
0.0f,
0.0f,
0.0f,
0.0f,
};
float const array_node_pyramid001_rotationy_angle_intangent_array[] = {
0.9997917f, 0.0f,
0.9778267f, 0.0f,
2.066697f, 0.0f,
2.65557f, 0.0f,
3.155573f, 0.0f,
};
float const array_node_pyramid001_rotationy_angle_outtangent_array[] = {
0.48884f, 0.0f,
1.766637f, 0.0f,
2.511097f, 0.0f,
2.97776f, 0.0f,
3.666564f, 0.0f,
};
enum interpolation const array_node_pyramid001_rotationy_angle_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_rotationy_angle_sampler = {
// node_pyramid001_rotationy_angle_input
.input = {
.float_array = array_node_pyramid001_rotationy_angle_input_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationy_angle_output
.output = {
.float_array = array_node_pyramid001_rotationy_angle_output_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationy_angle_intangent
.in_tangent = {
.float_array = array_node_pyramid001_rotationy_angle_intangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationy_angle_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_rotationy_angle_outtangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationy_angle_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_rotationy_angle_interpolation_array,
.count = 5,
.stride = 1,
},
};
float const array_node_pyramid001_rotationx_angle_input_array[] = {
0.0f,
1.466667f,
2.366667f,
2.8f,
3.333333f,
};
float const array_node_pyramid001_rotationx_angle_output_array[] = {
0.0f,
-69.99999f,
-175.0f,
-235.0f,
0.0f,
};
float const array_node_pyramid001_rotationx_angle_intangent_array[] = {
0.9997917f, 0.0f,
0.9778267f, -69.99999f,
2.066697f, -175.0f,
2.65557f, -235.0f,
3.155573f, 0.0f,
};
float const array_node_pyramid001_rotationx_angle_outtangent_array[] = {
0.48884f, 0.0f,
1.766637f, -69.99999f,
2.511097f, -175.0f,
2.97776f, -235.0f,
3.666564f, 0.0f,
};
enum interpolation const array_node_pyramid001_rotationx_angle_interpolation_array[] = {
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
interpolation::BEZIER,
};
sampler const sampler_node_pyramid001_rotationx_angle_sampler = {
// node_pyramid001_rotationx_angle_input
.input = {
.float_array = array_node_pyramid001_rotationx_angle_input_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationx_angle_output
.output = {
.float_array = array_node_pyramid001_rotationx_angle_output_array,
.count = 5,
.stride = 1,
},
// node_pyramid001_rotationx_angle_intangent
.in_tangent = {
.float_array = array_node_pyramid001_rotationx_angle_intangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationx_angle_outtangent
.out_tangent = {
.float_array = array_node_pyramid001_rotationx_angle_outtangent_array,
.count = 5,
.stride = 2,
},
// node_pyramid001_rotationx_angle_interpolation
.interpolation = {
.interpolation_array = array_node_pyramid001_rotationx_angle_interpolation_array,
.count = 5,
.stride = 1,
},
};
channel const node_channel_node_cube_translation_x = {
.source_sampler = &sampler_node_cube_translation_x_sampler,
.target_transform_index = 0,
@ -677,11 +1100,52 @@ channel const node_channel_node_bone002_rotationz_angle = {
.target_attribute = target_attribute::ANGLE,
};
channel const node_channel_node_pyramid001_translation_x = {
.source_sampler = &sampler_node_pyramid001_translation_x_sampler,
.target_transform_index = 0,
.target_attribute = target_attribute::X,
};
channel const node_channel_node_pyramid001_translation_y = {
.source_sampler = &sampler_node_pyramid001_translation_y_sampler,
.target_transform_index = 0,
.target_attribute = target_attribute::Y,
};
channel const node_channel_node_pyramid001_translation_z = {
.source_sampler = &sampler_node_pyramid001_translation_z_sampler,
.target_transform_index = 0,
.target_attribute = target_attribute::Z,
};
channel const node_channel_node_pyramid001_rotationz_angle = {
.source_sampler = &sampler_node_pyramid001_rotationz_angle_sampler,
.target_transform_index = 1,
.target_attribute = target_attribute::ANGLE,
};
channel const node_channel_node_pyramid001_rotationy_angle = {
.source_sampler = &sampler_node_pyramid001_rotationy_angle_sampler,
.target_transform_index = 2,
.target_attribute = target_attribute::ANGLE,
};
channel const node_channel_node_pyramid001_rotationx_angle = {
.source_sampler = &sampler_node_pyramid001_rotationx_angle_sampler,
.target_transform_index = 3,
.target_attribute = target_attribute::ANGLE,
};
// american_cherry_png
image const image_american_cherry_png = {
.resource_name = L"_AMERICAN_CHERRY_PNG",
};
// Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg
image const image_masonry_unit_masonry_glass_block_square_stack_jpg = {
.resource_name = L"_MASONRY_UNIT_MASONRY_GLASS_BLOCK_SQUARE_STACK_JPG",
};
// _02_png
image const image__02_png = {
.resource_name = L"_102_PNG",
@ -699,6 +1163,7 @@ image const image_sitework_planting_grass_bermuda1_jpg = {
image const * const images[] = {
&image_american_cherry_png,
&image_masonry_unit_masonry_glass_block_square_stack_jpg,
&image__02_png,
&image_finishes_flooring_tile_square_medium_blue_png,
&image_sitework_planting_grass_bermuda1_jpg,
@ -955,7 +1420,7 @@ effect const effect_grass = {
},
.diffuse = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 3 }, // SiteWork_Planting_Grass_Bermuda1_jpg
.texture = { .image_index = 4 }, // SiteWork_Planting_Grass_Bermuda1_jpg
},
.specular = {
.type = color_or_texture_type::COLOR,
@ -993,7 +1458,7 @@ effect const effect_wood = {
},
.specular = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 2 }, // Finishes_Flooring_Tile_Square_Medium_Blue_png
.texture = { .image_index = 3 }, // Finishes_Flooring_Tile_Square_Medium_Blue_png
},
.shininess = 10.0f,
.reflective = {
@ -1282,6 +1747,40 @@ effect const effect_material__18_1 = {
}
};
effect const effect_material__21 = {
.type = effect_type::BLINN,
.blinn = {
.emission = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.ambient = {
.type = color_or_texture_type::COLOR,
.color = {0.588f, 0.588f, 0.588f, 1.0f},
},
.diffuse = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 1 }, // Masonry_Unit_Masonry_Glass_Block_Square_Stack_jpg
},
.specular = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.shininess = 10.0f,
.reflective = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.reflectivity = 0.0f,
.transparent = {
.type = color_or_texture_type::COLOR,
.color = {1.0f, 1.0f, 1.0f, 1.0f},
},
.transparency = 1.0f,
.index_of_refraction = 0.0f,
}
};
material const material_coloreffectr26g177b26_material = {
.effect = &effect_coloreffectr26g177b26,
};
@ -1350,6 +1849,10 @@ material const material_material__18_1_material = {
.effect = &effect_material__18_1,
};
material const material_material__21_material = {
.effect = &effect_material__21,
};
input_element const input_elements_position_0_3_normal_0_3_texcoord_0_3[] = {
{
.semantic = "POSITION",
@ -1565,6 +2068,27 @@ geometry const geometry_geom_box001 = {
}
};
triangles const triangles_geom_pyramid001[] = {
{
.count = 8, // triangles
.index_offset = 0, // indices
.inputs_index = 0, // index into inputs_list
},
};
geometry const geometry_geom_pyramid001 = {
.mesh = {
.triangles = triangles_geom_pyramid001,
.triangles_count = 1,
.vertex_buffer_offset = 14508,
.vertex_buffer_size = 612,
.index_buffer_offset = 4512,
.index_buffer_size = 96,
}
};
geometry const * const geometries[] = {
&geometry_geom_cube,
&geometry_geom_torus,
@ -1573,6 +2097,7 @@ geometry const * const geometries[] = {
&geometry_geom_geosphere,
&geometry_geom_lightindicator,
&geometry_geom_box001,
&geometry_geom_pyramid001,
};
matrix const inverse_bind_matrices_geom_box001_skin1[] = {
@ -1660,15 +2185,6 @@ instance_material const instance_geometry_instance_materials_node_cube_0[] = {
.diffuse = { .input_set = -1 },
.specular = { .input_set = -1 },
},
{
.element_index = 5, // an index into mesh.triangles
.material = &material_material__17_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = -1 },
.specular = { .input_set = -1 },
},
{
.element_index = 0, // an index into mesh.triangles
.material = &material_material__16_material,
@ -1687,6 +2203,15 @@ instance_material const instance_geometry_instance_materials_node_cube_0[] = {
.diffuse = { .input_set = -1 },
.specular = { .input_set = -1 },
},
{
.element_index = 5, // an index into mesh.triangles
.material = &material_material__17_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = -1 },
.specular = { .input_set = -1 },
},
{
.element_index = 2, // an index into mesh.triangles
.material = &material_material__19_material,
@ -1994,9 +2519,9 @@ instance_light const instance_lights_node_geosphere[] = {
};
channel const * const node_channels_node_geosphere[] = {
&node_channel_node_geosphere_scaleaxisrotation,
&node_channel_node_geosphere_inversescaleaxisrotation,
&node_channel_node_geosphere_scale,
&node_channel_node_geosphere_scaleaxisrotation,
};
node const node_node_geosphere = {
@ -2044,8 +2569,8 @@ instance_light const instance_lights_node_light[] = {
};
channel const * const node_channels_node_light[] = {
&node_channel_node_light_translation_x,
&node_channel_node_light_translation_y,
&node_channel_node_light_translation_x,
};
node const node_node_light = {
@ -2149,8 +2674,8 @@ instance_material const instance_controller_instance_materials_node_box001_0[] =
.specular = { .input_set = -1 },
},
{
.element_index = 5, // an index into mesh.triangles
.material = &material_material__15_1_material,
.element_index = 0, // an index into mesh.triangles
.material = &material_material__14_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
@ -2158,8 +2683,8 @@ instance_material const instance_controller_instance_materials_node_box001_0[] =
.specular = { .input_set = -1 },
},
{
.element_index = 0, // an index into mesh.triangles
.material = &material_material__14_material,
.element_index = 5, // an index into mesh.triangles
.material = &material_material__15_1_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
@ -2327,6 +2852,82 @@ node const node_node_bone002 = {
.channels_count = 1,
};
transform const transforms_node_pyramid001[] = {
{
.type = transform_type::TRANSLATE,
.translate = {10.76371f, -13.71933f, 0.01108826f},
},
{
.type = transform_type::ROTATE,
.rotate = {0.0f, 0.0f, 1.0f, 0.0f},
},
{
.type = transform_type::ROTATE,
.rotate = {0.0f, 1.0f, 0.0f, 0.0f},
},
{
.type = transform_type::ROTATE,
.rotate = {1.0f, 0.0f, 0.0f, 0.0f},
},
};
instance_material const instance_geometry_instance_materials_node_pyramid001_0[] = {
{
.element_index = 0, // an index into mesh.triangles
.material = &material_material__21_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = 0 },
.specular = { .input_set = -1 },
},
};
instance_geometry const instance_geometries_node_pyramid001[] = {
{
.geometry = &geometry_geom_pyramid001,
.instance_materials = instance_geometry_instance_materials_node_pyramid001_0,
.instance_materials_count = 1,
},
};
instance_controller const instance_controllers_node_pyramid001[] = {
};
instance_light const instance_lights_node_pyramid001[] = {
};
channel const * const node_channels_node_pyramid001[] = {
&node_channel_node_pyramid001_rotationy_angle,
&node_channel_node_pyramid001_translation_z,
&node_channel_node_pyramid001_rotationx_angle,
&node_channel_node_pyramid001_translation_x,
&node_channel_node_pyramid001_rotationz_angle,
&node_channel_node_pyramid001_translation_y,
};
node const node_node_pyramid001 = {
.parent_index = -1,
.type = node_type::NODE,
.transforms = transforms_node_pyramid001,
.transforms_count = 4,
.instance_geometries = instance_geometries_node_pyramid001,
.instance_geometries_count = 1,
.instance_controllers = instance_controllers_node_pyramid001,
.instance_controllers_count = 0,
.instance_lights = instance_lights_node_pyramid001,
.instance_lights_count = 0,
.channels = node_channels_node_pyramid001,
.channels_count = 6,
};
node const * const nodes[] = {
&node_node_environmentambientlight, // 0
&node_node_cube, // 1
@ -2339,6 +2940,7 @@ node const * const nodes[] = {
&node_node_box001, // 8
&node_node_bone001, // 9
&node_node_bone002, // 10
&node_node_pyramid001, // 11
};
inputs const inputs_list[] = {

View File

@ -0,0 +1,425 @@
#include "collada_types.hpp"
namespace ship20 {
using namespace collada;
light const light_environmentambientlight = {
.type = light_type::AMBIENT,
.color = { 0.0f, 0.0f, 0.0f },
};
light const light_omni002_light = {
.type = light_type::POINT,
.color = { 1.0f, 1.0f, 1.0f },
};
light const light_omni003_light = {
.type = light_type::POINT,
.color = { 1.0f, 1.0f, 1.0f },
};
// shipple2_png
image const image_shipple2_png = {
.resource_name = L"_0_SHIPPLE2_PNG",
};
image const * const images[] = {
&image_shipple2_png,
};
effect const effect_diffusetexture = {
.type = effect_type::BLINN,
.blinn = {
.emission = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.ambient = {
.type = color_or_texture_type::COLOR,
.color = {0.588f, 0.588f, 0.588f, 1.0f},
},
.diffuse = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 0 }, // shipple2_png
},
.specular = {
.type = color_or_texture_type::COLOR,
.color = {0.5f, 0.5f, 0.5f, 1.0f},
},
.shininess = 10.0f,
.reflective = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.reflectivity = 0.0f,
.transparent = {
.type = color_or_texture_type::COLOR,
.color = {1.0f, 1.0f, 1.0f, 1.0f},
},
.transparency = 1.0f,
.index_of_refraction = 0.0f,
}
};
effect const effect_cyanengine = {
.type = effect_type::BLINN,
.blinn = {
.emission = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.9647059f, 1.0f, 1.0f},
},
.ambient = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.diffuse = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.specular = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.shininess = 10.0f,
.reflective = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.reflectivity = 0.0f,
.transparent = {
.type = color_or_texture_type::COLOR,
.color = {1.0f, 1.0f, 1.0f, 1.0f},
},
.transparency = 1.0f,
.index_of_refraction = 0.0f,
}
};
effect const effect_emissivetexture = {
.type = effect_type::BLINN,
.blinn = {
.emission = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 0 }, // shipple2_png
},
.ambient = {
.type = color_or_texture_type::COLOR,
.color = {0.588f, 0.588f, 0.588f, 1.0f},
},
.diffuse = {
.type = color_or_texture_type::TEXTURE,
.texture = { .image_index = 0 }, // shipple2_png
},
.specular = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.shininess = 10.0f,
.reflective = {
.type = color_or_texture_type::COLOR,
.color = {0.0f, 0.0f, 0.0f, 1.0f},
},
.reflectivity = 0.0f,
.transparent = {
.type = color_or_texture_type::COLOR,
.color = {1.0f, 1.0f, 1.0f, 1.0f},
},
.transparency = 1.0f,
.index_of_refraction = 0.0f,
}
};
material const material_diffusetexture_material = {
.effect = &effect_diffusetexture,
};
material const material_cyanengine_material = {
.effect = &effect_cyanengine,
};
material const material_emissivetexture_material = {
.effect = &effect_emissivetexture,
};
input_element const input_elements_position_0_3_normal_0_3_texcoord_0_3[] = {
{
.semantic = "POSITION",
.semantic_index = 0,
.format = input_format::FLOAT3,
},
{
.semantic = "NORMAL",
.semantic_index = 0,
.format = input_format::FLOAT3,
},
{
.semantic = "TEXCOORD",
.semantic_index = 0,
.format = input_format::FLOAT3,
},
};
triangles const triangles_geom_ship[] = {
{
.count = 2949, // triangles
.index_offset = 0, // indices
.inputs_index = 0, // index into inputs_list
},
{
.count = 60, // triangles
.index_offset = 8847, // indices
.inputs_index = 0, // index into inputs_list
},
{
.count = 239, // triangles
.index_offset = 9027, // indices
.inputs_index = 0, // index into inputs_list
},
};
geometry const geometry_geom_ship = {
.mesh = {
.triangles = triangles_geom_ship,
.triangles_count = 3,
.vertex_buffer_offset = 0,
.vertex_buffer_size = 133272,
.index_buffer_offset = 0,
.index_buffer_size = 38976,
}
};
geometry const * const geometries[] = {
&geometry_geom_ship,
};
transform const transforms_node_environmentambientlight[] = {
};
instance_geometry const instance_geometries_node_environmentambientlight[] = {
};
instance_controller const instance_controllers_node_environmentambientlight[] = {
};
instance_light const instance_lights_node_environmentambientlight[] = {
{
.light = &light_environmentambientlight,
}
};
channel const * const node_channels_node_environmentambientlight[] = {};
node const node_node_environmentambientlight = {
.parent_index = -1,
.type = node_type::NODE,
.transforms = transforms_node_environmentambientlight,
.transforms_count = 0,
.instance_geometries = instance_geometries_node_environmentambientlight,
.instance_geometries_count = 0,
.instance_controllers = instance_controllers_node_environmentambientlight,
.instance_controllers_count = 0,
.instance_lights = instance_lights_node_environmentambientlight,
.instance_lights_count = 1,
.channels = node_channels_node_environmentambientlight,
.channels_count = 0,
};
transform const transforms_node_ship[] = {
{
.type = transform_type::ROTATE,
.rotate = {0.0f, 0.0f, 1.0f, -180.0f},
},
};
instance_material const instance_geometry_instance_materials_node_ship_0[] = {
{
.element_index = 2, // an index into mesh.triangles
.material = &material_emissivetexture_material,
.emission = { .input_set = 0 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = 0 },
.specular = { .input_set = -1 },
},
{
.element_index = 0, // an index into mesh.triangles
.material = &material_diffusetexture_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = 0 },
.specular = { .input_set = -1 },
},
{
.element_index = 1, // an index into mesh.triangles
.material = &material_cyanengine_material,
.emission = { .input_set = -1 },
.ambient = { .input_set = -1 },
.diffuse = { .input_set = -1 },
.specular = { .input_set = -1 },
},
};
instance_geometry const instance_geometries_node_ship[] = {
{
.geometry = &geometry_geom_ship,
.instance_materials = instance_geometry_instance_materials_node_ship_0,
.instance_materials_count = 3,
},
};
instance_controller const instance_controllers_node_ship[] = {
};
instance_light const instance_lights_node_ship[] = {
};
channel const * const node_channels_node_ship[] = {
};
node const node_node_ship = {
.parent_index = -1,
.type = node_type::NODE,
.transforms = transforms_node_ship,
.transforms_count = 1,
.instance_geometries = instance_geometries_node_ship,
.instance_geometries_count = 1,
.instance_controllers = instance_controllers_node_ship,
.instance_controllers_count = 0,
.instance_lights = instance_lights_node_ship,
.instance_lights_count = 0,
.channels = node_channels_node_ship,
.channels_count = 0,
};
transform const transforms_node_omni002[] = {
{
.type = transform_type::TRANSLATE,
.translate = {-286.5521f, 395.7583f, 161.5579f},
},
};
instance_geometry const instance_geometries_node_omni002[] = {
};
instance_controller const instance_controllers_node_omni002[] = {
};
instance_light const instance_lights_node_omni002[] = {
{
.light = &light_omni002_light,
}
};
channel const * const node_channels_node_omni002[] = {
};
node const node_node_omni002 = {
.parent_index = -1,
.type = node_type::NODE,
.transforms = transforms_node_omni002,
.transforms_count = 1,
.instance_geometries = instance_geometries_node_omni002,
.instance_geometries_count = 0,
.instance_controllers = instance_controllers_node_omni002,
.instance_controllers_count = 0,
.instance_lights = instance_lights_node_omni002,
.instance_lights_count = 1,
.channels = node_channels_node_omni002,
.channels_count = 0,
};
transform const transforms_node_omni003[] = {
{
.type = transform_type::TRANSLATE,
.translate = {333.2103f, -314.4593f, 161.5578f},
},
};
instance_geometry const instance_geometries_node_omni003[] = {
};
instance_controller const instance_controllers_node_omni003[] = {
};
instance_light const instance_lights_node_omni003[] = {
{
.light = &light_omni003_light,
}
};
channel const * const node_channels_node_omni003[] = {
};
node const node_node_omni003 = {
.parent_index = -1,
.type = node_type::NODE,
.transforms = transforms_node_omni003,
.transforms_count = 1,
.instance_geometries = instance_geometries_node_omni003,
.instance_geometries_count = 0,
.instance_controllers = instance_controllers_node_omni003,
.instance_controllers_count = 0,
.instance_lights = instance_lights_node_omni003,
.instance_lights_count = 1,
.channels = node_channels_node_omni003,
.channels_count = 0,
};
node const * const nodes[] = {
&node_node_environmentambientlight, // 0
&node_node_ship, // 1
&node_node_omni002, // 2
&node_node_omni003, // 3
};
inputs const inputs_list[] = {
{
.elements = input_elements_position_0_3_normal_0_3_texcoord_0_3,
.elements_count = 3,
},
};
extern collada::descriptor const descriptor;
collada::descriptor const descriptor = {
.nodes = nodes,
.nodes_count = (sizeof (nodes)) / (sizeof (nodes[0])),
.inputs_list = inputs_list,
.inputs_list_count = (sizeof (inputs_list)) / (sizeof (inputs_list[0])),
.images = images,
.images_count = (sizeof (images)) / (sizeof (images[0])),
};
}