collada_scene: get camera and light position from scene
This commit is contained in:
parent
85174f15f6
commit
8f22a0faf2
65
_math.lua
65
_math.lua
@ -498,6 +498,36 @@ mat4 = {
|
||||
return M
|
||||
end,
|
||||
|
||||
orthographic_rh = function(view_width, view_height, near_z, far_z)
|
||||
assert(not scalar.near_equal(view_width, 0.0, 0.00001))
|
||||
assert(not scalar.near_equal(view_height, 0.0, 0.00001))
|
||||
assert(not scalar.near_equal(far_z, near_z, 0.00001))
|
||||
|
||||
local f_range = 1.0 / (near_z - far_z)
|
||||
|
||||
local M = mat4()
|
||||
M.m[0 * 4 + 0] = 2.0 / view_width
|
||||
--M.m[0 * 4 + 1] = 0.0
|
||||
--M.m[0 * 4 + 2] = 0.0
|
||||
--M.m[0 * 4 + 3] = 0.0
|
||||
|
||||
--M.m[1 * 4 + 0] = 0.0
|
||||
M.m[1 * 4 + 1] = 2.0 / view_height
|
||||
--M.m[1 * 4 + 2] = 0.0
|
||||
--M.m[1 * 4 + 3] = 0.0
|
||||
|
||||
--M.m[2 * 4 + 0] = 0.0
|
||||
--M.m[2 * 4 + 1] = 0.0
|
||||
M.m[2 * 4 + 2] = f_range
|
||||
--M.m[2 * 4 + 3] = 0.0
|
||||
|
||||
--M.m[3 * 4 + 0] = 0.0
|
||||
--M.m[3 * 4 + 1] = 0.0
|
||||
M.m[3 * 4 + 2] = f_range * near_z
|
||||
M.m[3 * 4 + 3] = 1.0
|
||||
return M
|
||||
end,
|
||||
|
||||
near_equal = function(M1, M2, epsilon)
|
||||
local d00 = abs(M1.m[0 * 4 + 0] - M2.m[0 * 4 + 0])
|
||||
local d01 = abs(M1.m[0 * 4 + 1] - M2.m[0 * 4 + 1])
|
||||
@ -759,6 +789,41 @@ vec3 = {
|
||||
return result
|
||||
end,
|
||||
|
||||
transform = function(v, M)
|
||||
local x = ((M.m[0 * 4 + 0] * v.f[0])
|
||||
+ (M.m[1 * 4 + 0] * v.f[1])
|
||||
+ (M.m[2 * 4 + 0] * v.f[2])
|
||||
+ (M.m[3 * 4 + 0]))
|
||||
|
||||
local y = ((M.m[0 * 4 + 1] * v.f[0])
|
||||
+ (M.m[1 * 4 + 1] * v.f[1])
|
||||
+ (M.m[2 * 4 + 1] * v.f[2])
|
||||
+ (M.m[3 * 4 + 1]))
|
||||
|
||||
local z = ((M.m[0 * 4 + 2] * v.f[0])
|
||||
+ (M.m[1 * 4 + 2] * v.f[1])
|
||||
+ (M.m[2 * 4 + 2] * v.f[2])
|
||||
+ (M.m[3 * 4 + 2]))
|
||||
|
||||
return vec4(x, y, z, 1)
|
||||
end,
|
||||
|
||||
transform_normal = function(v, M)
|
||||
local x = ((M.m[0 * 4 + 0] * v.f[0])
|
||||
+ (M.m[1 * 4 + 0] * v.f[1])
|
||||
+ (M.m[2 * 4 + 0] * v.f[2]))
|
||||
|
||||
local y = ((M.m[0 * 4 + 1] * v.f[0])
|
||||
+ (M.m[1 * 4 + 1] * v.f[1])
|
||||
+ (M.m[2 * 4 + 1] * v.f[2]))
|
||||
|
||||
local z = ((M.m[0 * 4 + 2] * v.f[0])
|
||||
+ (M.m[1 * 4 + 2] * v.f[1])
|
||||
+ (M.m[2 * 4 + 2] * v.f[2]))
|
||||
|
||||
return vec4(x, y, z, 0)
|
||||
end,
|
||||
|
||||
equal = function(v1, v2)
|
||||
return (
|
||||
(v1.f[0] == v2.f[0]) and
|
||||
|
||||
13
build_scene.sh
Normal file
13
build_scene.sh
Normal file
@ -0,0 +1,13 @@
|
||||
set -eux
|
||||
|
||||
cd scene/$1
|
||||
|
||||
PYTHONPATH=~/d3d10 \
|
||||
python -m collada.main \
|
||||
$1.DAE \
|
||||
$1.lua \
|
||||
$1.vtx \
|
||||
$1.vjw \
|
||||
$1.idx \
|
||||
$1.rc \
|
||||
$1.mk
|
||||
@ -199,8 +199,8 @@ collada_scene = {
|
||||
if node.instance_geometries_count > 0 then
|
||||
current_shader = shader_static
|
||||
love.graphics.setShader(current_shader)
|
||||
current_shader:send("view_position", view_position)
|
||||
current_shader:send("light_position", light_position)
|
||||
current_shader:send("view_position", view_position.data)
|
||||
current_shader:send("light_position", light_position.data)
|
||||
|
||||
current_shader:send("world_transform", "column", world.data)
|
||||
current_shader:send("transform", "column", transform.data)
|
||||
@ -219,9 +219,21 @@ collada_scene = {
|
||||
end
|
||||
end,
|
||||
|
||||
draw_nodes = function(node_state, transform)
|
||||
local view_position = {-630.43401, -528.53392, 474.3912, 1.0}
|
||||
local light_position = {-403.649, -165.804, 317.237, 1.0}
|
||||
draw_nodes = function(node_state, projection)
|
||||
local camera_world = node_state.node_instances[node_state.camera].world
|
||||
local view_position = vec3.transform(vec3._zero, camera_world)
|
||||
|
||||
local camera_target_world = node_state.node_instances[node_state.camera_target].world
|
||||
local view_target_position = vec3.transform(vec3._zero, camera_target_world)
|
||||
|
||||
local light_world = node_state.node_instances[node_state.light].world
|
||||
local light_position = vec3.transform(vec3._zero, light_world)
|
||||
|
||||
local view = mat4.look_at_rh(view_position,
|
||||
view_target_position,
|
||||
vec3(0, 0, 1))
|
||||
|
||||
local transform = view * projection
|
||||
|
||||
local node_index = 0
|
||||
for _, node in ipairs(node_state.nodes) do
|
||||
|
||||
@ -61,6 +61,19 @@ local instance_transforms_from_node = function(node)
|
||||
return transforms
|
||||
end
|
||||
|
||||
local find_node_index_by_name = function(nodes, name)
|
||||
local value = nil
|
||||
local node_index = 0
|
||||
for _, node in ipairs(nodes) do
|
||||
if node.node_name == name then
|
||||
return node_index
|
||||
end
|
||||
node_index = node_index + 1
|
||||
end
|
||||
print(name)
|
||||
assert(false)
|
||||
end
|
||||
|
||||
local collada_scene_node_state
|
||||
|
||||
collada_scene_node_state = {
|
||||
@ -103,12 +116,24 @@ collada_scene_node_state = {
|
||||
node_index = node_index + 1
|
||||
end
|
||||
end,
|
||||
|
||||
set_camera = function(this, camera_name, camera_target_name)
|
||||
this.camera = find_node_index_by_name(this.nodes, camera_name)
|
||||
this.camera_target = find_node_index_by_name(this.nodes, camera_target_name)
|
||||
end,
|
||||
|
||||
set_light = function(this, light_name)
|
||||
this.light = find_node_index_by_name(this.nodes, light_name)
|
||||
end,
|
||||
},
|
||||
|
||||
__call = function(_t, nodes)
|
||||
local value = {
|
||||
nodes = nodes,
|
||||
node_instances = {},
|
||||
camera = nil,
|
||||
camera_target = nil,
|
||||
light = nil,
|
||||
}
|
||||
setmetatable(value, collada_scene_node_state)
|
||||
value:node_instances_new(nodes)
|
||||
|
||||
68
main.lua
68
main.lua
@ -14,6 +14,24 @@ local collada_scene_node_state = require 'collada_scene.node_state'
|
||||
local scene_test = require 'scene.test.test'
|
||||
local scene_noodle = require 'scene.noodle.noodle'
|
||||
local scene_sci_fi_ship = require 'scene.sci_fi_ship.sci_fi_ship'
|
||||
local scene_shadow_test = require 'scene.shadow_test.shadow_test'
|
||||
|
||||
local scenes = {
|
||||
sci_fi_ship = {
|
||||
descriptor = scene_sci_fi_ship.descriptor,
|
||||
image_path = "scene/sci_fi_ship",
|
||||
idx_path = "scene/sci_fi_ship/sci_fi_ship.idx",
|
||||
vtx_path = "scene/sci_fi_ship/sci_fi_ship.vtx",
|
||||
vjw_path = "scene/sci_fi_ship/sci_fi_ship.vjw",
|
||||
},
|
||||
shadow_test = {
|
||||
descriptor = scene_shadow_test.descriptor,
|
||||
image_path = "scene/shadow_test",
|
||||
idx_path = "scene/shadow_test/shadow_test.idx",
|
||||
vtx_path = "scene/shadow_test/shadow_test.vtx",
|
||||
vjw_path = "scene/shadow_test/shadow_test.vjw",
|
||||
},
|
||||
}
|
||||
|
||||
local node_state
|
||||
|
||||
@ -47,14 +65,12 @@ end
|
||||
function love.load(args)
|
||||
love.window.setMode(1024, 1024, {depth=true, resizable=false})
|
||||
|
||||
local scene = scene_sci_fi_ship
|
||||
|
||||
local idx_path = "scene/sci_fi_ship/sci_fi_ship.idx"
|
||||
local vtx_path = "scene/sci_fi_ship/sci_fi_ship.vtx"
|
||||
local vjw_path = "scene/sci_fi_ship/sci_fi_ship.vjw"
|
||||
collada_scene.load_buffers(idx_path, vtx_path, vjw_path)
|
||||
collada_scene.load_images("scene/sci_fi_ship", scene.descriptor.images)
|
||||
local scene = scenes.shadow_test
|
||||
collada_scene.load_buffers(scene.idx_path, scene.vtx_path, scene.vjw_path)
|
||||
collada_scene.load_images(scene.image_path, scene.descriptor.images)
|
||||
node_state = collada_scene_node_state(scene.descriptor.nodes)
|
||||
node_state:set_camera("node_camera001", "node_camera001_target")
|
||||
node_state:set_light("node_direct001")
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- canvas
|
||||
@ -82,37 +98,37 @@ function love.draw()
|
||||
0.1,
|
||||
10000.0)
|
||||
|
||||
local view = mat4.look_at_rh(vec3(-630.43401, -528.53392, 474.3912),
|
||||
vec3(0.0, 0.0, 13.41141),
|
||||
vec3(0, 0, 1))
|
||||
--projection = mat4.orthographic_rh(500, 500, 0.1, 10000.0)
|
||||
|
||||
local world1 = mat4.rotation_z(rotation)
|
||||
local world2 = mat4.rotation_z(rotation * 0.5)
|
||||
--local world3 = mat4.translation(0, 0, -0.5)
|
||||
rotation = rotation + 0.01
|
||||
|
||||
local transform = view * projection
|
||||
local transform = projection
|
||||
|
||||
collada_scene_animate.update(t, node_state)
|
||||
t = t + 0.016
|
||||
|
||||
love.graphics.setBlendMode("replace", "premultiplied")
|
||||
love.graphics.setDepthMode("less", true)
|
||||
love.graphics.setCanvas({
|
||||
g_color_canvas,
|
||||
g_position_canvas,
|
||||
g_normal_canvas,
|
||||
depth = true
|
||||
})
|
||||
love.graphics.clear(
|
||||
{0.0, 0.0, 0.0, 1.0},
|
||||
{0.0, 0.0, 0.0, 1.0},
|
||||
{0.0, 0.0, 0.0, 1.0})
|
||||
collada_scene.draw_nodes(node_state, transform)
|
||||
|
||||
love.graphics.setCanvas()
|
||||
love.graphics.setShader(screen_shader)
|
||||
screen_shader:send("g_normal_sampler", g_normal_canvas)
|
||||
screen_shader:send("g_color_sampler", g_color_canvas)
|
||||
love.graphics.drawFromShader(screen_index_buffer, 3 * 2, 1, 1)
|
||||
-- love.graphics.setCanvas({
|
||||
-- g_color_canvas,
|
||||
-- g_position_canvas,
|
||||
-- g_normal_canvas,
|
||||
-- depth = true
|
||||
-- })
|
||||
-- love.graphics.clear(
|
||||
-- {0.0, 0.0, 0.0, 1.0},
|
||||
-- {0.0, 0.0, 0.0, 1.0},
|
||||
-- {0.0, 0.0, 0.0, 1.0})
|
||||
-- collada_scene.draw_nodes(node_state, transform)
|
||||
|
||||
--love.graphics.setCanvas()
|
||||
--love.graphics.setShader(screen_shader)
|
||||
--screen_shader:send("g_normal_sampler", g_normal_canvas)
|
||||
--screen_shader:send("g_color_sampler", g_color_canvas)
|
||||
--love.graphics.drawFromShader(screen_index_buffer, 3 * 2, 1, 1)
|
||||
end
|
||||
|
||||
615
scene/shadow_test/shadow_test.DAE
Normal file
615
scene/shadow_test/shadow_test.DAE
Normal file
File diff suppressed because one or more lines are too long
BIN
scene/shadow_test/shadow_test.idx
Normal file
BIN
scene/shadow_test/shadow_test.idx
Normal file
Binary file not shown.
776
scene/shadow_test/shadow_test.lua
Normal file
776
scene/shadow_test/shadow_test.lua
Normal file
@ -0,0 +1,776 @@
|
||||
local collada_types = require 'collada_types'
|
||||
|
||||
local ns = {}
|
||||
ns.camera_camera001_camera = {
|
||||
xfov = 45.0,
|
||||
yfov = 0.0,
|
||||
znear = 1.0,
|
||||
zfar = 1000.0,
|
||||
aspect_ratio = 0.0,
|
||||
}
|
||||
ns.light_environmentambientlight = {
|
||||
type = collada_types.light_type.AMBIENT,
|
||||
color = {0.0, 0.0, 0.0},
|
||||
}
|
||||
ns.light_direct001_light = {
|
||||
type = collada_types.light_type.DIRECTIONAL,
|
||||
color = {1.0, 1.0, 1.0},
|
||||
}
|
||||
ns.images = {
|
||||
}
|
||||
ns.effect_material__148 = {
|
||||
type = collada_types.effect_type.BLINN,
|
||||
blinn = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.588, 0.588, 0.588, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.588, 0.588, 0.588, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.effect_coloreffectr5g54b179 = {
|
||||
type = collada_types.effect_type.PHONG,
|
||||
phong = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 0.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.01960784, 0.2117647, 0.7019608, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.01960784, 0.2117647, 0.7019608, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.effect_coloreffectr134g110b8 = {
|
||||
type = collada_types.effect_type.PHONG,
|
||||
phong = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 0.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.5254902, 0.4313725, 0.03137255, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.5254902, 0.4313725, 0.03137255, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.effect_coloreffectr255g229b0 = {
|
||||
type = collada_types.effect_type.PHONG,
|
||||
phong = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 0.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 0.8980392, 0.0, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 0.8980392, 0.0, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.effect_coloreffectr6g134b6 = {
|
||||
type = collada_types.effect_type.PHONG,
|
||||
phong = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 0.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.02352941, 0.5254902, 0.02352941, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.02352941, 0.5254902, 0.02352941, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.effect_coloreffectr88g88b225 = {
|
||||
type = collada_types.effect_type.PHONG,
|
||||
phong = {
|
||||
emission = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 0.0},
|
||||
},
|
||||
ambient = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.345098, 0.345098, 0.8823529, 1.0},
|
||||
},
|
||||
diffuse = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.345098, 0.345098, 0.8823529, 1.0},
|
||||
},
|
||||
specular = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
shininess = 10.0,
|
||||
reflective = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {0.0, 0.0, 0.0, 1.0},
|
||||
},
|
||||
reflectivity = 0.0,
|
||||
transparent = {
|
||||
type = collada_types.color_or_texture_type.COLOR,
|
||||
color = {1.0, 1.0, 1.0, 1.0},
|
||||
},
|
||||
transparency = 1.0,
|
||||
index_of_refraction = 0.0,
|
||||
}
|
||||
}
|
||||
ns.material_coloreffectr5g54b179_material = {
|
||||
effect = ns.effect_coloreffectr5g54b179,
|
||||
}
|
||||
ns.material_coloreffectr134g110b8_material = {
|
||||
effect = ns.effect_coloreffectr134g110b8,
|
||||
}
|
||||
ns.material_coloreffectr255g229b0_material = {
|
||||
effect = ns.effect_coloreffectr255g229b0,
|
||||
}
|
||||
ns.material_coloreffectr6g134b6_material = {
|
||||
effect = ns.effect_coloreffectr6g134b6,
|
||||
}
|
||||
ns.material_coloreffectr88g88b225_material = {
|
||||
effect = ns.effect_coloreffectr88g88b225,
|
||||
}
|
||||
ns.material_material__148_material = {
|
||||
effect = ns.effect_material__148,
|
||||
}
|
||||
ns.input_elements_position_0_3_normal_0_3_texcoord_0_3 = {
|
||||
{
|
||||
semantic = "POSITION",
|
||||
semantic_index = 0,
|
||||
format = collada_types.input_format.FLOAT3,
|
||||
},
|
||||
{
|
||||
semantic = "NORMAL",
|
||||
semantic_index = 0,
|
||||
format = collada_types.input_format.FLOAT3,
|
||||
},
|
||||
{
|
||||
semantic = "TEXCOORD",
|
||||
semantic_index = 0,
|
||||
format = collada_types.input_format.FLOAT3,
|
||||
},
|
||||
}
|
||||
ns.triangles_geom_plane001 = {
|
||||
{
|
||||
count = 20000, -- triangles
|
||||
index_offset = 0, -- indices
|
||||
inputs_index = 0, -- index into inputs_list
|
||||
},
|
||||
}
|
||||
ns.geometry_geom_plane001 = {
|
||||
mesh = {
|
||||
triangles = ns.triangles_geom_plane001,
|
||||
triangles_count = 1,
|
||||
|
||||
vertex_buffer_offset = 0,
|
||||
vertex_buffer_size = 489648,
|
||||
|
||||
index_buffer_offset = 0,
|
||||
index_buffer_size = 240000,
|
||||
}
|
||||
}
|
||||
ns.triangles_geom_torus_knot001 = {
|
||||
{
|
||||
count = 2880, -- triangles
|
||||
index_offset = 0, -- indices
|
||||
inputs_index = 0, -- index into inputs_list
|
||||
},
|
||||
}
|
||||
ns.geometry_geom_torus_knot001 = {
|
||||
mesh = {
|
||||
triangles = ns.triangles_geom_torus_knot001,
|
||||
triangles_count = 1,
|
||||
|
||||
vertex_buffer_offset = 489648,
|
||||
vertex_buffer_size = 75504,
|
||||
|
||||
index_buffer_offset = 240000,
|
||||
index_buffer_size = 34560,
|
||||
}
|
||||
}
|
||||
ns.triangles_geom_cone001 = {
|
||||
{
|
||||
count = 288, -- triangles
|
||||
index_offset = 0, -- indices
|
||||
inputs_index = 0, -- index into inputs_list
|
||||
},
|
||||
}
|
||||
ns.geometry_geom_cone001 = {
|
||||
mesh = {
|
||||
triangles = ns.triangles_geom_cone001,
|
||||
triangles_count = 1,
|
||||
|
||||
vertex_buffer_offset = 565152,
|
||||
vertex_buffer_size = 9984,
|
||||
|
||||
index_buffer_offset = 274560,
|
||||
index_buffer_size = 3456,
|
||||
}
|
||||
}
|
||||
ns.triangles_geom_box001 = {
|
||||
{
|
||||
count = 32, -- triangles
|
||||
index_offset = 0, -- indices
|
||||
inputs_index = 0, -- index into inputs_list
|
||||
},
|
||||
}
|
||||
ns.geometry_geom_box001 = {
|
||||
mesh = {
|
||||
triangles = ns.triangles_geom_box001,
|
||||
triangles_count = 1,
|
||||
|
||||
vertex_buffer_offset = 575136,
|
||||
vertex_buffer_size = 3840,
|
||||
|
||||
index_buffer_offset = 278016,
|
||||
index_buffer_size = 384,
|
||||
}
|
||||
}
|
||||
ns.geometries = {
|
||||
ns.geometry_geom_plane001,
|
||||
ns.geometry_geom_torus_knot001,
|
||||
ns.geometry_geom_cone001,
|
||||
ns.geometry_geom_box001,
|
||||
}
|
||||
ns.transforms_node_environmentambientlight = {
|
||||
}
|
||||
ns.instance_geometries_node_environmentambientlight = {
|
||||
}
|
||||
ns.instance_controllers_node_environmentambientlight = {
|
||||
}
|
||||
ns.instance_lights_node_environmentambientlight = {
|
||||
{
|
||||
light = ns.light_environmentambientlight,
|
||||
}
|
||||
}
|
||||
ns.node_channels_node_environmentambientlight = {
|
||||
}
|
||||
ns.node_node_environmentambientlight = {
|
||||
node_name = "node_environmentambientlight",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_environmentambientlight,
|
||||
transforms_count = 0,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_environmentambientlight,
|
||||
instance_geometries_count = 0,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_environmentambientlight,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_environmentambientlight,
|
||||
instance_lights_count = 1,
|
||||
|
||||
channels = ns.node_channels_node_environmentambientlight,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_plane001 = {
|
||||
}
|
||||
ns.instance_geometry_instance_materials_node_plane001_0 = {
|
||||
{
|
||||
element_index = 0, -- an index into mesh.triangles
|
||||
material = ns.material_material__148_material,
|
||||
|
||||
emission = { input_set = -1 },
|
||||
ambient = { input_set = -1 },
|
||||
diffuse = { input_set = -1 },
|
||||
specular = { input_set = -1 },
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_plane001 = {
|
||||
{
|
||||
geometry = ns.geometry_geom_plane001,
|
||||
|
||||
instance_materials = ns.instance_geometry_instance_materials_node_plane001_0,
|
||||
instance_materials_count = 1,
|
||||
},
|
||||
}
|
||||
ns.instance_controllers_node_plane001 = {
|
||||
}
|
||||
ns.instance_lights_node_plane001 = {
|
||||
}
|
||||
ns.node_channels_node_plane001 = {
|
||||
}
|
||||
ns.node_node_plane001 = {
|
||||
node_name = "node_plane001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_plane001,
|
||||
transforms_count = 0,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_plane001,
|
||||
instance_geometries_count = 1,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_plane001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_plane001,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_plane001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_camera001 = {
|
||||
{
|
||||
type = collada_types.transform_type.MATRIX,
|
||||
matrix = {-0.8666914, -0.4987199, -0.01115339, 0.0, 0.377458, -0.6702487, 0.6389774, 0.0, -0.3261463, 0.5495863, 0.7691447, 0.0, -85.35754, 169.1221, 269.2574, 1.0},
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_camera001 = {
|
||||
}
|
||||
ns.instance_controllers_node_camera001 = {
|
||||
}
|
||||
ns.instance_lights_node_camera001 = {
|
||||
}
|
||||
ns.node_channels_node_camera001 = {
|
||||
}
|
||||
ns.node_node_camera001 = {
|
||||
node_name = "node_camera001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_camera001,
|
||||
transforms_count = 1,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_camera001,
|
||||
instance_geometries_count = 0,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_camera001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_camera001,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_camera001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_camera001_target = {
|
||||
{
|
||||
type = collada_types.transform_type.TRANSLATE,
|
||||
translate = {10.26849, 7.983534, 43.74428},
|
||||
},
|
||||
{
|
||||
type = collada_types.transform_type.ROTATE,
|
||||
rotate = {-0.7700763, 0.318976, 0.5524825, -73.7201},
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_camera001_target = {
|
||||
}
|
||||
ns.instance_controllers_node_camera001_target = {
|
||||
}
|
||||
ns.instance_lights_node_camera001_target = {
|
||||
}
|
||||
ns.node_channels_node_camera001_target = {
|
||||
}
|
||||
ns.node_node_camera001_target = {
|
||||
node_name = "node_camera001_target",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_camera001_target,
|
||||
transforms_count = 2,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_camera001_target,
|
||||
instance_geometries_count = 0,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_camera001_target,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_camera001_target,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_camera001_target,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_torus_knot001 = {
|
||||
{
|
||||
type = collada_types.transform_type.TRANSLATE,
|
||||
translate = {-6.954298, 40.46052, 74.58796},
|
||||
},
|
||||
{
|
||||
type = collada_types.transform_type.ROTATE,
|
||||
rotate = {-0.5773502, 0.5773503, 0.5773503, -120.0},
|
||||
},
|
||||
}
|
||||
ns.instance_geometry_instance_materials_node_torus_knot001_0 = {
|
||||
{
|
||||
element_index = 0, -- an index into mesh.triangles
|
||||
material = ns.material_coloreffectr134g110b8_material,
|
||||
|
||||
emission = { input_set = -1 },
|
||||
ambient = { input_set = -1 },
|
||||
diffuse = { input_set = -1 },
|
||||
specular = { input_set = -1 },
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_torus_knot001 = {
|
||||
{
|
||||
geometry = ns.geometry_geom_torus_knot001,
|
||||
|
||||
instance_materials = ns.instance_geometry_instance_materials_node_torus_knot001_0,
|
||||
instance_materials_count = 1,
|
||||
},
|
||||
}
|
||||
ns.instance_controllers_node_torus_knot001 = {
|
||||
}
|
||||
ns.instance_lights_node_torus_knot001 = {
|
||||
}
|
||||
ns.node_channels_node_torus_knot001 = {
|
||||
}
|
||||
ns.node_node_torus_knot001 = {
|
||||
node_name = "node_torus_knot001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_torus_knot001,
|
||||
transforms_count = 2,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_torus_knot001,
|
||||
instance_geometries_count = 1,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_torus_knot001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_torus_knot001,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_torus_knot001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_direct001 = {
|
||||
{
|
||||
type = collada_types.transform_type.MATRIX,
|
||||
matrix = {-0.5428072, 0.8398573, 0.0, 0.0, -0.7717882, -0.4988136, 0.3943704, 0.0, 0.3312148, 0.2140671, 0.9189516, 0.0, 60.17801, 38.89358, 166.9632, 1.0},
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_direct001 = {
|
||||
}
|
||||
ns.instance_controllers_node_direct001 = {
|
||||
}
|
||||
ns.instance_lights_node_direct001 = {
|
||||
{
|
||||
light = ns.light_direct001_light,
|
||||
}
|
||||
}
|
||||
ns.node_channels_node_direct001 = {
|
||||
}
|
||||
ns.node_node_direct001 = {
|
||||
node_name = "node_direct001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_direct001,
|
||||
transforms_count = 1,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_direct001,
|
||||
instance_geometries_count = 0,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_direct001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_direct001,
|
||||
instance_lights_count = 1,
|
||||
|
||||
channels = ns.node_channels_node_direct001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_direct001_target = {
|
||||
{
|
||||
type = collada_types.transform_type.ROTATE,
|
||||
rotate = {-0.5773502, 0.5773503, 0.5773503, -120.0},
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_direct001_target = {
|
||||
}
|
||||
ns.instance_controllers_node_direct001_target = {
|
||||
}
|
||||
ns.instance_lights_node_direct001_target = {
|
||||
}
|
||||
ns.node_channels_node_direct001_target = {
|
||||
}
|
||||
ns.node_node_direct001_target = {
|
||||
node_name = "node_direct001_target",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_direct001_target,
|
||||
transforms_count = 1,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_direct001_target,
|
||||
instance_geometries_count = 0,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_direct001_target,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_direct001_target,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_direct001_target,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_cone001 = {
|
||||
{
|
||||
type = collada_types.transform_type.TRANSLATE,
|
||||
translate = {-70.49181, -17.80504, 52.78688},
|
||||
},
|
||||
{
|
||||
type = collada_types.transform_type.ROTATE,
|
||||
rotate = {1.0, 0.0, 0.0, -89.7081},
|
||||
},
|
||||
}
|
||||
ns.instance_geometry_instance_materials_node_cone001_0 = {
|
||||
{
|
||||
element_index = 0, -- an index into mesh.triangles
|
||||
material = ns.material_coloreffectr6g134b6_material,
|
||||
|
||||
emission = { input_set = -1 },
|
||||
ambient = { input_set = -1 },
|
||||
diffuse = { input_set = -1 },
|
||||
specular = { input_set = -1 },
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_cone001 = {
|
||||
{
|
||||
geometry = ns.geometry_geom_cone001,
|
||||
|
||||
instance_materials = ns.instance_geometry_instance_materials_node_cone001_0,
|
||||
instance_materials_count = 1,
|
||||
},
|
||||
}
|
||||
ns.instance_controllers_node_cone001 = {
|
||||
}
|
||||
ns.instance_lights_node_cone001 = {
|
||||
}
|
||||
ns.node_channels_node_cone001 = {
|
||||
}
|
||||
ns.node_node_cone001 = {
|
||||
node_name = "node_cone001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_cone001,
|
||||
transforms_count = 2,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_cone001,
|
||||
instance_geometries_count = 1,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_cone001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_cone001,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_cone001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.transforms_node_box001 = {
|
||||
{
|
||||
type = collada_types.transform_type.TRANSLATE,
|
||||
translate = {72.78688, -2.19274e-06, 50.16393},
|
||||
},
|
||||
{
|
||||
type = collada_types.transform_type.ROTATE,
|
||||
rotate = {-1.0, 0.0, 0.0, -90.0},
|
||||
},
|
||||
}
|
||||
ns.instance_geometry_instance_materials_node_box001_0 = {
|
||||
{
|
||||
element_index = 0, -- an index into mesh.triangles
|
||||
material = ns.material_coloreffectr88g88b225_material,
|
||||
|
||||
emission = { input_set = -1 },
|
||||
ambient = { input_set = -1 },
|
||||
diffuse = { input_set = -1 },
|
||||
specular = { input_set = -1 },
|
||||
},
|
||||
}
|
||||
ns.instance_geometries_node_box001 = {
|
||||
{
|
||||
geometry = ns.geometry_geom_box001,
|
||||
|
||||
instance_materials = ns.instance_geometry_instance_materials_node_box001_0,
|
||||
instance_materials_count = 1,
|
||||
},
|
||||
}
|
||||
ns.instance_controllers_node_box001 = {
|
||||
}
|
||||
ns.instance_lights_node_box001 = {
|
||||
}
|
||||
ns.node_channels_node_box001 = {
|
||||
}
|
||||
ns.node_node_box001 = {
|
||||
node_name = "node_box001",
|
||||
|
||||
parent_index = -1,
|
||||
|
||||
type = collada_types.node_type.NODE,
|
||||
|
||||
transforms = ns.transforms_node_box001,
|
||||
transforms_count = 2,
|
||||
|
||||
instance_geometries = ns.instance_geometries_node_box001,
|
||||
instance_geometries_count = 1,
|
||||
|
||||
instance_controllers = ns.instance_controllers_node_box001,
|
||||
instance_controllers_count = 0,
|
||||
|
||||
instance_lights = ns.instance_lights_node_box001,
|
||||
instance_lights_count = 0,
|
||||
|
||||
channels = ns.node_channels_node_box001,
|
||||
channels_count = 0,
|
||||
}
|
||||
ns.nodes = {
|
||||
ns.node_node_environmentambientlight, -- 0
|
||||
ns.node_node_plane001, -- 1
|
||||
ns.node_node_camera001, -- 2
|
||||
ns.node_node_camera001_target, -- 3
|
||||
ns.node_node_torus_knot001, -- 4
|
||||
ns.node_node_direct001, -- 5
|
||||
ns.node_node_direct001_target, -- 6
|
||||
ns.node_node_cone001, -- 7
|
||||
ns.node_node_box001, -- 8
|
||||
}
|
||||
ns.inputs_list = {
|
||||
{
|
||||
elements = ns.input_elements_position_0_3_normal_0_3_texcoord_0_3,
|
||||
elements_count = 3,
|
||||
},
|
||||
}
|
||||
ns.descriptor = {
|
||||
nodes = ns.nodes,
|
||||
nodes_count = #ns.nodes,
|
||||
|
||||
geometries = ns.geometries,
|
||||
nodes_count = #ns.geometries,
|
||||
|
||||
inputs_list = ns.inputs_list,
|
||||
inputs_list_count = #ns.inputs_list,
|
||||
|
||||
images = ns.images,
|
||||
images_count = #ns.images,
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
descriptor = ns.descriptor
|
||||
}
|
||||
0
scene/shadow_test/shadow_test.mk
Normal file
0
scene/shadow_test/shadow_test.mk
Normal file
4
scene/shadow_test/shadow_test.rc
Normal file
4
scene/shadow_test/shadow_test.rc
Normal file
@ -0,0 +1,4 @@
|
||||
RES_SCENES_SHADOW_TEST_VTX RCDATA "shadow_test.vtx"
|
||||
RES_SCENES_SHADOW_TEST_VJW RCDATA "shadow_test.vjw"
|
||||
RES_SCENES_SHADOW_TEST_IDX RCDATA "shadow_test.idx"
|
||||
|
||||
0
scene/shadow_test/shadow_test.vjw
Normal file
0
scene/shadow_test/shadow_test.vjw
Normal file
BIN
scene/shadow_test/shadow_test.vtx
Normal file
BIN
scene/shadow_test/shadow_test.vtx
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user