diff --git a/LICENSE.txt b/LICENSE.txt
index 28b412b..358c186 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1,5 +1,7 @@
Meshnodes for Minetest [meshnode]
=================================
-Copyright (C) 2013 Stuart Jones - LGPL
+License Source Code: Copyright (C) 2013-2017 Stuart Jones - LGPL v2.1
+
+License Media Files: CC0 1.0 Universal (CC0 1.0)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f67ced2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,144 @@
+Meshnodes for Minetest [meshnode]
+=================================
+
+**Mod Version:** 0.3.0
+
+**Minetest Version:** 0.4.14 or later
+
+**Depends:** default
+
+Description
+-----------
+Meshnodes is a mod that transforms ordinary minetest nodes into a connected
+array of replica entities to which players can attach to and manoeuvre.
+
+To use, simply build or place a model using nodes with a supported drawtype
+then place a meshnode controller in an appropriate position. Now use the
+special 'glue' that you will find in the controller node's inventory to
+connect your structure. Alternatively, if you are using worldedit, you can
+use the position markers to define the extents of your model.
+
+When everything is connected you should return the 'glue' to the controller
+to enable activation. Once activated, players can then attach themselves
+to the controller or restore the model back to nodes. Restored models can
+be easily reconnected using the 'Connect from meta positions' option.
+
+Please note that the 'glue' bottles are unique to a controller's position
+and are only useable within a limited range.
+
+**Supported Drawtypes**
+
+I have done my best to include support for most of the common nodes that
+are useful for building ships etc, like fences, xpanes and walls including
+support for all default stairs and slabs in full 6d rotation. It may or
+may not work with other decorative nodeboxes/meshnodes, the best way to
+find out is to simply try it.
+
+Exceptions include flowing liquids, wallmounted nodes, rails or any node
+with non-generated wield or inventory images. Some drawtypes have only
+partial support, like 'plantlike' for example.
+
+**Construction Advice**
+
+Place the controller node in the direction you wish to face when you attach
+to it and always try to make your models hollow wherever possible.
+
+Controls
+--------
+```
+[Up] Forward
+[Down] Reverse
+[Left] Turn Left
+[Right] Turn Right
+[Jump] Up
+[Sneak] Down
+[RMB] Interact
+```
+Crafting
+--------
+By default crafting is enabled in singleplayer mode only.
+
+**Meshnode Controller** [meshnode:controller]
+
+
+ [default:bronzeblock] |
+ [default:diamondblock] |
+ [default:bronzeblock] |
+
+
+ [default:obsidian_block] |
+ [default:steelblock] |
+ [default:goldblock] |
+
+
+ [default:bronzeblock] |
+ [default:steelblock] |
+ [default:bronzeblock] |
+
+
+
+Multiplayer
+-----------
+Take care if you use this mod on a public server, while I have done my
+best to support basic protection, I am sure this mod could still provide
+serious potential for grief in the hands of the wrong people.
+
+By default the controller node will only be available via `/give[me]` and
+requires the 'meshnode' privilege to be effective, however, non-privileged
+players will still be able to attach to and operate pre-activated models.
+
+Note that you will probably need to increase `max_objects_per_block` to
+something a little higher than the default 64 to avoid server warnings and
+broken models. You can set `meshnode_autoconf = true` to automatically
+increase that limit to 4096 which, in theory, equates to one solid map-block
+full of meshnodes, though I would not advise testing that on live server.
+
+Blacklist
+---------
+A global blacklist table is stored is in `meshnode.blacklist` keyed by item
+name, in multiplayer mode the following nodes are blacklisted by default.
+```
+meshnode.blacklist["default:chest_locked"] = true
+meshnode.blacklist["default:water_source"] = true
+meshnode.blacklist["default:river_water_source"] = true
+meshnode.blacklist["default:lava_source"] = true
+```
+Configuration
+-------------
+The global config table is stored `meshnode.config` and can overridden by
+adding the config name prefixed with 'meshnode_' to your minetest.conf file.
+
+**Example:** (multiplayer defaults)
+```
+meshnode_max_speed = 2
+meshnode_max_lift = 1
+meshnode_yaw_amount = 0.017
+meshnode_max_radius = 8
+meshnode_show_in_creative = false
+meshnode_enable_crafting = false
+meshnode_autoconf = false
+```
+Note that speed, lift, yaw and radius may still be altered by other mods after
+the initial start-up via the global `meshnode.config` table.
+
+API
+---
+I would like to think that this mod could be used as the base for other mods
+like airships or sailing ships or perhaps even some fancy construction tool.
+
+For this reason I have exposed everything that I thought might be potentially
+useful under the `meshnode` namespace. I would hope that the source code is
+reasonably self-explanatory.
+
+Know Issues
+-----------
+Active objects sometimes disappear following a re-start/connect. This could
+be for a number or reasons including /clearobjects or a minetest bug. For this
+reason you are advised to always 'restore' your model to 'real' nodes before
+logging out or moving any significant distance away from it.
+
+The player controlling the entity may appear to be connected to the wrong
+part of the model when viewed by a player that was not present during the
+initial attachment. Currently the only solution is for the operator to
+detach then re-attach to the model in the presence of said player.
+
diff --git a/README.txt b/README.txt
deleted file mode 100644
index c2d588e..0000000
--- a/README.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-Meshnodes for Minetest [meshnode]
-=================================
-
-Meshnodes is a mod that transforms ordinary nodes into a connected
-array of replica entities to which players can attach to and manoeuvre.
-
-To use, simply build or place a model using nodes with a supported drawtype.
-Next place a meshnode controller in the appropriate position, the operator
-will be attached directly on top of the controller node.
-
-Now right click the controller and enter the minimum and maximum extents of
-the model (relative to the controller x,y,z)
-
-e.g. for a 3x3 square of nodes with the controller placed above the center
-node, the relative positions would be minp = -1,-1,-1 maxp = 1,0,1
-
-Alternatively, if you are using worldedit, you can use the position
-markers to define the extents of the model. However, this must be done
-before the controller is placed.
-
-Supported Drawtypes
-===================
-
-normal
-allfaces_optional
-glasslike
-plantlike
-fencelike
-
-Also supports all default stairs and slabs in full 6d rotation.
-
-Controls
-========
-
-[Up] Forward
-[Down] Reverse
-[Left] Rotate Left
-[Right] Rotate Right
-[Jump] Up
-[Sneak] Down
-[RMB] Attach/Detach
-
-Limitations
-===========
-
-Models will disappear or become detached from the controller if they become
-unloaded. This can cause the server to warn against excessive objects and
-destroy them accordingly.
-
-I have tried a number of ways the get the models to persist after a server
-restart but so far all of my efforts have been thwarted by minetest's buggy
-object management system. I also wanted to be able to attach 'passengers'
-to the entities, however, this has not been possible for the same reason.
-
-Know Issues
-===========
-
-The player controlling the entity may appear to be connected to the wrong
-part of the model when viewed by a player that was not present during the
-initial attachment. Currently the only solution is for the operator to
-detach then re-attach to the model in the presence of said player.
-
diff --git a/api.lua b/api.lua
new file mode 100644
index 0000000..efbcf56
--- /dev/null
+++ b/api.lua
@@ -0,0 +1,356 @@
+meshnode = {}
+
+meshnode.config = {
+ max_speed = 2,
+ max_lift = 1,
+ yaw_amount = 0.017,
+ max_radius = 8,
+ show_in_creative = false,
+ enable_crafting = false,
+ autoconf = false,
+}
+
+meshnode.blacklist = {}
+
+local face_rotation = {
+ {x=0, y=0, z=0}, {x=0, y=90, z=0}, {x=0, y=180, z=0},
+ {x=0, y=-90, z=0}, {x=90, y=0, z=0}, {x=90, y=0, z=90},
+ {x=90, y=0, z=180}, {x=90, y=0, z=-90}, {x=-90, y=0, z=0},
+ {x=-90, y=0, z=-90}, {x=-90, y=0, z=180}, {x=-90, y=0, z=90},
+ {x=0, y=0, z=-90}, {x=90, y=90, z=0}, {x=180, y=0, z=90},
+ {x=0, y=-90, z=-90}, {x=0, y=0, z=90}, {x=0, y=90, z=90},
+ {x=180, y=0, z=-90}, {x=0, y=-90, z=90}, {x=180, y=180, z=0},
+ {x=180, y=90, z=0}, {x=180, y=0, z=0}, {x=180, y=-90, z=0},
+}
+
+local meshnode_id = 0
+
+local function connects_to_group(pos, groups)
+ local node = minetest.get_node(pos)
+ for _, group in pairs(groups) do
+ if minetest.get_item_group(node.name, group) > 0 then
+ return true
+ end
+ end
+end
+
+local function get_face_textures(facecons, texture)
+ local textures = {
+ "meshnode_trans.png",
+ "meshnode_trans.png",
+ "meshnode_trans.png",
+ "meshnode_trans.png",
+ }
+ for i = 1, 4 do
+ if facecons[i] == true then
+ textures[i] = texture
+ end
+ end
+ return textures
+end
+
+local function restore_facedir(node, delta, yaw)
+ local facedir = node.param2 or 0
+ local def = minetest.registered_items[node.name] or {}
+ if def.paramtype2 == "facedir" then
+ local rot = (meshnode.yaw_to_facedir(yaw) + delta) % 4
+ node.param2 = meshnode.rotate_facedir(rot, facedir)
+ end
+end
+
+meshnode.new_id = function()
+ meshnode_id = meshnode_id + 1
+ return tostring(meshnode_id)
+end
+
+meshnode.get_luaentity = function(id)
+ for _, entity in pairs(minetest.luaentities) do
+ if entity.mesh_id == id then
+ return entity
+ end
+ end
+end
+
+meshnode.get_map_pos = function(ref, parent)
+ local pos = parent.object:getpos()
+ local yaw = parent.object:getyaw()
+ local rot = meshnode.rotate_offset(yaw, ref.offset)
+ local vec = vector.add(pos, rot)
+ return vector.round(vec)
+end
+
+meshnode.facedir_to_yaw = function(facedir)
+ local yaw = 0
+ local rot = facedir % 4
+ if rot == 1 then
+ yaw = 3 * math.pi / 2
+ elseif rot == 2 then
+ yaw = math.pi
+ elseif rot == 3 then
+ yaw = math.pi / 2
+ end
+ return yaw
+end
+
+meshnode.yaw_to_facedir = function(yaw)
+ local deg = math.floor(math.deg(yaw) + 0.5) % 360
+ if deg < 90 then
+ return 0
+ end
+ return 4 - math.floor(deg / 90)
+end
+
+meshnode.facedir_to_rotation = function(facedir)
+ return face_rotation[facedir + 1] or face_rotation[1]
+end
+
+meshnode.rotation_to_facedir = function(rotation)
+ for i, v in ipairs(face_rotation) do
+ if vector.equals(v, rotation) then
+ return i - 1
+ end
+ end
+ return 0
+end
+
+meshnode.rotate_facedir = function(rot, facedir)
+ if rot == 0 then
+ return facedir
+ end
+ local rotation = facedir % 32
+ local axis = math.floor(rotation / 4)
+ if axis == 0 then
+ rotation = rotation + rot
+ elseif axis == 5 then
+ rotation = rotation - rot
+ else
+ local axis_rotation = {
+ {3, 2, 4},
+ {4, 1, 3},
+ {2, 4, 1},
+ {1, 3, 2},
+ }
+ local next_axis = axis_rotation[axis]
+ axis = next_axis[rot]
+ rotation = rotation + rot
+ end
+ return axis * 4 + (rotation % 4)
+end
+
+meshnode.rotate_offset = function(yaw, offset)
+ local cos = math.cos(yaw)
+ local sin = math.sin(yaw)
+ local x = offset.x * cos - offset.z * sin
+ local z = offset.x * sin + offset.z * cos
+ local ret = vector.round({x=x, y=offset.y, z=z})
+ return vector.round({x=x, y=offset.y, z=z})
+end
+
+meshnode.add_entity = function(ref, parent)
+ local pos = meshnode.get_map_pos(ref, parent)
+ local object = minetest.add_entity(pos, "meshnode:mesh")
+ if object then
+ local properties = {textures={ref.node.name}}
+ local def = minetest.registered_items[ref.node.name] or {}
+ if ref.meshtype == "plant" then
+ properties.visual = "mesh"
+ properties.visual_size = {x=1, y=1}
+ properties.mesh = "meshnode_plant.obj"
+ properties.textures = {def.tiles[1]}
+ elseif ref.meshtype == "fence" then
+ local textures = get_face_textures(ref.facecons, def.tiles[1])
+ table.insert(textures, 1, def.tiles[1])
+ properties.visual = "mesh"
+ properties.visual_size = {x=1, y=1}
+ properties.mesh = "meshnode_fence.obj"
+ properties.textures = textures
+ elseif ref.meshtype == "wall" then
+ local textures = get_face_textures(ref.facecons, def.tiles[1])
+ table.insert(textures, 1, def.tiles[1])
+ properties.visual = "mesh"
+ properties.visual_size = {x=1, y=1}
+ properties.mesh = "meshnode_wall.obj"
+ properties.textures = textures
+ elseif ref.meshtype == "pane" then
+ local textures = get_face_textures(ref.facecons, def.tiles[3])
+ properties.visual = "mesh"
+ properties.visual_size = {x=1, y=1}
+ properties.mesh = "meshnode_pane.obj"
+ properties.textures = textures
+ end
+ object:set_properties(properties)
+ if parent then
+ local entity = object:get_luaentity()
+ if entity then
+ entity.mesh_id = ref.id
+ entity.parent_id = parent.mesh_id
+ else
+ object:remove()
+ return
+ end
+ local yaw = parent.object:getyaw()
+ local offset = vector.multiply(ref.offset, 10)
+ local rotation = vector.new(ref.rotation)
+ object:set_attach(parent.object, "", offset, rotation)
+ end
+ end
+ return object
+end
+
+meshnode.create = function(pos, parent)
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local def = minetest.registered_items[node.name] or {}
+ local meshtype = "wielditem"
+ local scaffold = "meshnode:scaffold"
+ local facecons = {}
+ local faces = {
+ [1] = {x=0, y=0, z=-1},
+ [2] = {x=-1, y=0, z=0},
+ [3] = {x=0, y=0, z=1},
+ [4] = {x=1, y=0, z=0},
+ }
+ if not parent or
+ meshnode.blacklist[node.name] or
+ node.name == "meshnode:controller" or
+ node.name == "air" or
+ node.name == "ignore" or
+ def.paramtype2 == "wallmounted" or
+ def.paramtype2 == "flowingliquid" then
+ return
+ elseif def.drawtype == "plantlike" then
+ meshtype = "plant"
+ elseif minetest.get_item_group(node.name, "fence") > 0 then
+ scaffold = "meshnode:scaffold_fence"
+ if def.drawtype ~= "mesh" then
+ meshtype = "fence"
+ for i, face in pairs(faces) do
+ local p = vector.add(pos, face)
+ facecons[i] = connects_to_group(p, {"fence", "wood", "tree"})
+ end
+ end
+ elseif minetest.get_item_group(node.name, "wall") > 0 then
+ scaffold = "meshnode:scaffold_wall"
+ if def.drawtype ~= "mesh" then
+ meshtype = "wall"
+ for i, face in pairs(faces) do
+ local p = vector.add(pos, face)
+ facecons[i] = connects_to_group(p, {"wall", "stone"})
+ end
+ end
+ elseif minetest.get_item_group(node.name, "pane") > 0 then
+ meshtype = "pane"
+ scaffold = "meshnode:scaffold_pane"
+ if string.find(node.name, "_flat$") then
+ facecons = {[2]=true, [4]=true}
+ else
+ for i, face in pairs(faces) do
+ local p = vector.add(pos, face)
+ facecons[i] = connects_to_group(p, {"pane"})
+ end
+ end
+ elseif def.wield_image ~= "" or def.inventory_image ~="" then
+ return
+ end
+ local param2 = node.param2 or 0
+ local offset = vector.subtract(pos, parent.object:getpos())
+ local yaw = math.pi * 2 - parent.object:getyaw()
+ local delta = meshnode.yaw_to_facedir(yaw)
+ local facedir = meshnode.rotate_facedir(delta, param2)
+ local meta_str = nil
+ local meta_tab = meta:to_table() or {}
+ if meta_tab.inventory then
+ for _, list in pairs(meta_tab.inventory) do
+ for i, stack in ipairs(list) do
+ list[i] = ItemStack(stack):to_string()
+ end
+ end
+ end
+ if next(meta_tab) then
+ meta_str = minetest.serialize(meta_tab)
+ end
+ local ref = {
+ id = meshnode.new_id(),
+ node = node,
+ meta = meta_str,
+ delta = delta,
+ meshtype = meshtype,
+ facecons = facecons,
+ offset = meshnode.rotate_offset(yaw, offset),
+ rotation = meshnode.facedir_to_rotation(facedir),
+ }
+ local object = meshnode.add_entity(ref, parent)
+ if object then
+ minetest.set_node(pos, {name=scaffold})
+ table.insert(parent.nodes, ref)
+ end
+ return object
+end
+
+meshnode.restore = function(ref, parent)
+ local entity = meshnode.get_luaentity(ref.id)
+ local pos = meshnode.get_map_pos(ref, parent)
+ local yaw = parent.object:getyaw()
+ restore_facedir(ref.node, ref.delta, yaw)
+ minetest.add_node(pos, ref.node)
+ if entity then
+ entity.object:setpos(pos)
+ entity.object:set_detach()
+ entity.object:remove()
+ end
+ if ref.meta then
+ local meta = minetest.get_meta(pos)
+ local meta_tab = minetest.deserialize(ref.meta) or {}
+ meta:from_table(meta_tab)
+ end
+end
+
+meshnode.restore_all = function(parent, name)
+ local positions = {}
+ if #parent.nodes == 0 then
+ return positions
+ end
+ local minp = {x=32000, y=32000, z=32000}
+ local maxp = vector.multiply(minp, -1)
+ local yaw = parent.object:getyaw()
+ local nodedata = {}
+ for _, ref in pairs(parent.nodes) do
+ local pos = meshnode.get_map_pos(ref, parent)
+ if name and minetest.is_protected(pos, name) then
+ return
+ end
+ table.insert(nodedata, {pos=pos, ref=ref})
+ for axis, val in pairs(pos) do
+ if val < minp[axis] then
+ minp[axis] = val
+ end
+ if val > maxp[axis] then
+ maxp[axis] = val
+ end
+ end
+ end
+ local vm = minetest.get_voxel_manip(minp, maxp)
+ for _, data in pairs(nodedata) do
+ restore_facedir(data.ref.node, data.ref.delta, yaw)
+ vm:set_node_at(data.pos, data.ref.node)
+ end
+ vm:write_to_map()
+ vm:update_liquids()
+ vm:update_map()
+ for _, data in pairs(nodedata) do
+ local entity = meshnode.get_luaentity(data.ref.id)
+ if entity then
+ entity.object:setpos(data.pos)
+ entity.object:set_detach()
+ entity.object:remove()
+ end
+ if data.ref.meta then
+ local meta = minetest.get_meta(data.pos)
+ local meta_tab = minetest.deserialize(data.ref.meta) or {}
+ meta:from_table(meta_tab)
+ end
+ table.insert(positions, data.pos)
+ end
+ return positions
+end
+
diff --git a/depends.txt b/depends.txt
index e69de29..c28c5f3 100644
--- a/depends.txt
+++ b/depends.txt
@@ -0,0 +1,2 @@
+default
+wordedit?
diff --git a/description.txt b/description.txt
new file mode 100644
index 0000000..70459a1
--- /dev/null
+++ b/description.txt
@@ -0,0 +1 @@
+Poor man's voxel area entities.
diff --git a/init.lua b/init.lua
index 761a2d9..0f9fc96 100644
--- a/init.lua
+++ b/init.lua
@@ -1,55 +1,219 @@
-dofile(minetest.get_modpath(minetest.get_current_modname()).."/meshnode.lua")
-
-local groups = {cracky=3, oddly_breakable_by_hand=3}
-if MESHNODE_SHOW_IN_CREATIVE == false then
- groups.not_in_creative_inventory=1
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = function(s) return s end
+if minetest.get_modpath("intllib") then
+ S = intllib.Getter()
end
-local function is_valid_pos(pos)
- if pos then
- if pos.x and pos.y and pos.z then
- return math.abs(pos.x) <= MESHNODE_MAX_RADIUS and
- math.abs(pos.y) <= MESHNODE_MAX_RADIUS and
- math.abs(pos.z) <= MESHNODE_MAX_RADIUS
+dofile(minetest.get_modpath(minetest.get_current_modname()).."/api.lua")
+
+local has_worldedit = minetest.global_exists("worldedit")
+local is_singleplayer = minetest.is_singleplayer()
+local control_textures = {
+ "default_steel_block.png",
+ "default_diamond_block.png",
+ "default_bronze_block.png",
+ "default_obsidian_block.png",
+ "default_gold_block.png",
+}
+
+if is_singleplayer then
+ meshnode.config.max_radius = 16
+ meshnode.config.show_in_creative = true
+ meshnode.config.enable_crafting = true
+ meshnode.config.autoconf = true
+else
+ meshnode.blacklist["default:chest_locked"] = true
+ meshnode.blacklist["default:water_source"] = true
+ meshnode.blacklist["default:river_water_source"] = true
+ meshnode.blacklist["default:lava_source"] = true
+end
+
+for name, config in pairs(meshnode.config) do
+ local setting = minetest.setting_get("meshnode_"..name)
+ if type(config) == "number" then
+ setting = tonumber(setting)
+ elseif type(config) == "boolean" then
+ setting = minetest.setting_getbool("meshnode_"..name)
+ end
+ if setting then
+ meshnode.config[name] = setting
+ end
+end
+
+if meshnode.config.autoconf == true then
+ minetest.setting_set("max_objects_per_block", "4096")
+end
+
+local function has_privilege(name)
+ if is_singleplayer then
+ return true
+ end
+ return minetest.check_player_privs(name, {meshnode=true})
+end
+
+local function show_meshnode_formspec(pos, player)
+ local name = player:get_player_name()
+ if not has_privilege(name) then
+ return
+ end
+ local meta = minetest.get_meta(pos)
+ local inv = meta:get_inventory()
+ local id = minetest.pos_to_string(pos)
+ local entity = meshnode.get_luaentity(id)
+ local spos = pos.x..","..pos.y..","..pos.z
+ local formspec = "size[8,8]"..
+ default.gui_bg..
+ default.gui_bg_img..
+ default.gui_slots..
+ default.get_hotbar_bg(0,4)..
+ "list[current_player;main;0,4;8,1;]"..
+ "list[current_player;main;0,5.25;8,3;8]"..
+ "list[nodemeta:"..spos..";tool;0.5,1.5;1,1;]"
+ local buttons = {}
+ if entity and #entity.nodes > 0 then
+ if inv:contains_item("tool", "meshnode:glue") then
+ table.insert(buttons, {"activate", "Activate meshnode"})
end
+ table.insert(buttons, {"reset", "Reset connections"})
end
+ if meta:get_string("meshnode") ~= "" then
+ table.insert(buttons, {"connect_meta", "Connect meta positions"})
+ end
+ if has_worldedit and worldedit.pos1[name] and worldedit.pos2[name] then
+ table.insert(buttons, {"connect_we", "Connect worldedit markers"})
+ end
+ local y = 0.25
+ for _, btn in pairs(buttons) do
+ formspec = formspec.."button_exit[2.25,"..y..
+ ";5,0.5;"..btn[1]..";"..S(btn[2]).."]"
+ y = y + 0.9
+ end
+ minetest.show_formspec(name, "meshnode_"..id, formspec)
end
-local function get_step(a, b)
- if a > b then
- return -1
- end
- return 1
+local function register_scaffold(name, groups)
+ groups.not_in_creative_inventory = 1
+ groups.cracky = 1
+ minetest.register_node(name, {
+ paramtype = "light",
+ drawtype = "glasslike",
+ is_ground_content = false,
+ sunlight_propagates = true,
+ use_texture_alpha = true,
+ tiles = {"meshnode_highlight.png"},
+ groups = groups,
+ })
end
-minetest.register_entity("meshnode:ctrl", {
+register_scaffold("meshnode:scaffold", {})
+register_scaffold("meshnode:scaffold_fence", {fence=1})
+register_scaffold("meshnode:scaffold_wall", {wall=1})
+register_scaffold("meshnode:scaffold_pane", {pane=1})
+
+if meshnode.config.enable_crafting then
+ minetest.register_craft({
+ output = "meshnode:controller",
+ recipe = {
+ {"default:bronzeblock", "default:diamondblock", "default:bronzeblock"},
+ {"default:obsidian_block", "default:steelblock", "default:goldblock"},
+ {"default:bronzeblock", "default:steelblock", "default:bronzeblock"},
+ }
+ })
+end
+
+minetest.register_entity("meshnode:mesh", {
physical = true,
- visual = "cube",
- visual_size = {x=1, y=1},
- textures = {
- "meshnode_top.png",
- "meshnode_side.png",
- "meshnode_side.png",
- "meshnode_side.png",
- "meshnode_side.png",
- "meshnode_side.png",
- },
- player = nil,
- speed = 0,
- lift = 0,
- on_activate = function(self, staticdata, dtime_s)
- self.object:set_armor_groups({cracky=50})
+ visual = "wielditem",
+ visual_size = {x=0.666, y=0.666},
+ on_activate = function(self, staticdata)
if staticdata == "expired" then
self.object:remove()
end
end,
- on_rightclick = function(self, clicker)
- if self.player == nil then
- clicker:set_attach(self.object, "", {x=0,y=15,z=0}, {x=0,y=90,z=0})
- self.player = clicker
+ get_staticdata = function(self)
+ return "expired"
+ end,
+})
+
+minetest.register_entity("meshnode:ctrl", {
+ physical = true,
+ visual = "mesh",
+ mesh = "meshnode_plant.obj",
+ visual_size = {x=1, y=1},
+ textures = {"meshnode_trans.png"},
+ facedir = 0,
+ speed = 0,
+ lift = 0,
+ nodes = {},
+ activated = false,
+ animation = "stand",
+ on_activate = function(self, staticdata)
+ local pos = self.object:getpos()
+ local objects = minetest.get_objects_inside_radius(pos, 0.5) or {}
+ for _, object in pairs(objects) do
+ if object ~= self.object then
+ local entity = object:get_luaentity()
+ if entity and entity.name == "meshnode:ctrl" then
+ minetest.log("warning", "meshnode: duplicate object removed")
+ self.object:remove()
+ return
+ end
+ end
+ end
+ self.object:set_armor_groups({immortal=1})
+ if staticdata then
+ local data = minetest.deserialize(staticdata) or {}
+ self.mesh_id = data[1]
+ self.activated = data[2]
+ self.nodes = data[3] or {}
+ end
+ if self.activated then
+ self.mesh_id = meshnode.new_id()
else
- self.player:set_detach()
- self.player = nil
+ local node = minetest.get_node(pos)
+ if node.name ~= "meshnode:controller" then
+ minetest.log("warning", "meshnode: stray object removed")
+ self.object:remove()
+ return
+ end
+ end
+ for _, ref in pairs(self.nodes) do
+ ref.id = meshnode.new_id()
+ meshnode.add_entity(ref, self)
+ end
+ self:set_activated(self.activated)
+ end,
+ on_punch = function(self, puncher)
+ --self.object:remove()
+ end,
+ on_rightclick = function(self, clicker)
+ if not self.mesh_id then
+ return
+ end
+ if self.activated then
+ local name = clicker:get_player_name()
+ local buttons = {}
+ local formspec = "size[4,3.5]"
+ if self.player then
+ table.insert(buttons, {"detach", "Detach"})
+ local btn = {"animation_sit", "Sit"}
+ if self.animation == "sit" then
+ btn = {"animation_stand", "Stand"}
+ end
+ table.insert(buttons, btn)
+ else
+ table.insert(buttons, {"attach", "Attach"})
+ table.insert(buttons, {"restore", "Restore"})
+ end
+ table.insert(buttons, {"align", "Align"})
+ local y = 0.5
+ for _, btn in pairs(buttons) do
+ formspec = formspec.."button_exit[0.5,"..y..
+ ";3,0.75;"..btn[1]..";"..S(btn[2]).."]"
+ y = y + 1
+ end
+ local formname = "meshnode_"..self.mesh_id
+ minetest.show_formspec(name, formname, formspec)
end
end,
on_step = function(self, dtime)
@@ -66,31 +230,31 @@ minetest.register_entity("meshnode:ctrl", {
else
speed = speed * 0.99
end
- if speed > MESHNODE_MAX_SPEED then
- speed = MESHNODE_MAX_SPEED
- elseif speed < 0 - MESHNODE_MAX_SPEED then
- speed = 0 - MESHNODE_MAX_SPEED
+ if speed > meshnode.config.max_speed then
+ speed = meshnode.config.max_speed
+ elseif speed < 0 - meshnode.config.max_speed then
+ speed = 0 - meshnode.config.max_speed
end
if ctrl.jump then
lift = lift + 0.1
elseif ctrl.sneak then
lift = lift - 0.1
else
- lift = lift * 0.9
+ lift = lift * 0.99
end
- if lift > MESHNODE_MAX_LIFT then
- lift = MESHNODE_MAX_LIFT
- elseif lift < 0 - MESHNODE_MAX_LIFT then
- lift = 0 - MESHNODE_MAX_LIFT
+ if lift > meshnode.config.max_lift then
+ lift = meshnode.config.max_lift
+ elseif lift < 0 - meshnode.config.max_lift then
+ lift = 0 - meshnode.config.max_lift
end
if ctrl.left then
- yaw = yaw + MESHNODE_YAW_AMOUNT
+ yaw = yaw + meshnode.config.yaw_amount
elseif ctrl.right then
- yaw = yaw - MESHNODE_YAW_AMOUNT
+ yaw = yaw - meshnode.config.yaw_amount
end
- velocity.x = math.cos(yaw) * speed
+ velocity.x = -math.sin(yaw) * speed
velocity.y = lift
- velocity.z = math.sin(yaw) * speed
+ velocity.z = math.cos(yaw) * speed
self.object:setyaw(yaw)
self.object:setvelocity(velocity)
self.speed = speed
@@ -102,80 +266,238 @@ minetest.register_entity("meshnode:ctrl", {
end
end,
get_staticdata = function(self)
- return "expired"
+ local data = {self.mesh_id, self.activated, self.nodes}
+ return minetest.serialize(data)
end,
-})
-
-minetest.register_entity("meshnode:mesh", {
- physical = true,
- visual_size = {x=1, y=1},
- on_activate = function(self, staticdata, dtime_s)
- if staticdata == "expired" then
- self.object:remove()
+ set_alignment = function(self)
+ local pos = self.object:getpos()
+ local yaw = self.object:getyaw()
+ local deg = math.deg(yaw) + 45
+ deg = math.floor(deg / 90) * 90
+ self.object:setvelocity({x=0, y=0, z=0})
+ self.object:setyaw(math.rad(deg))
+ self.object:setpos(vector.round(pos))
+ self.speed = 0
+ self.lift = 0
+ end,
+ set_activated = function(self, active)
+ local mesh = "meshnode_plant.obj"
+ local anim = {x=0, y=0}
+ local textures = {"meshnode_trans.png"}
+ local collisionbox = {0,0,0, 0,0,0}
+ if active then
+ mesh = "meshnode_ctrl.b3d"
+ anim = {x=20, y=100}
+ textures = control_textures
+ collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}
end
- end,
- get_staticdata = function(self)
- return "expired"
+ self.object:set_properties({
+ mesh = mesh,
+ textures = textures,
+ collisionbox = collisionbox,
+ })
+ self.object:set_animation(anim, 15)
+ self.activated = active
end,
})
minetest.register_node("meshnode:controller", {
- description = "Meshnode Controller",
+ description = S("Meshnode Controller"),
+ drawtype = "mesh",
+ mesh = "meshnode_ctrl.obj",
+ paramtype = "light",
paramtype2 = "facedir",
- tiles = {"meshnode_top.png", "meshnode_side.png", "meshnode_side.png"},
- is_ground_content = true,
- groups = groups,
+ tiles = control_textures,
+ groups = {choppy=2, oddly_breakable_by_hand=2},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
- meta:set_string("formspec", "size[5,3]"
- .."field[0.5,1;2,0.5;minp;Minp;${minp}]"
- .."field[3.0,1;2,0.5;maxp;Maxp;${maxp}]"
- .."button_exit[1.0,2;3,0.5;connect;Generate Entity]"
- )
- meta:set_string("infotext", "Meshnode Controller")
+ local inv = meta:get_inventory()
+ local stack = {
+ name = "meshnode:glue",
+ metadata = minetest.pos_to_string(pos),
+ }
+ inv:set_size("tool", 1)
+ inv:add_item("tool", stack)
+ meta:set_string("infotext", S("Meshnode Controller"))
+ end,
+ on_destruct = function(pos)
+ local id = minetest.pos_to_string(pos)
+ local entity = meshnode.get_luaentity(id)
+ if entity then
+ meshnode.restore_all(entity)
+ entity.object:remove()
+ end
end,
after_place_node = function(pos, placer)
- if worldedit then
- local name = placer:get_player_name()
- local meta = minetest.get_meta(pos)
- if worldedit.pos1[name] then
- local p = vector.subtract(worldedit.pos1[name], pos)
- meta:set_string("minp", p.x..","..p.y..","..p.z)
- end
- if worldedit.pos2[name] then
- local p = vector.subtract(worldedit.pos2[name], pos)
- meta:set_string("maxp", p.x..","..p.y..","..p.z)
+ local node = minetest.get_node(pos)
+ local id = minetest.pos_to_string(pos)
+ local object = minetest.add_entity(pos, "meshnode:ctrl")
+ if object then
+ local entity = object:get_luaentity()
+ if entity then
+ local facedir = node.param2 or 0
+ local yaw = meshnode.facedir_to_yaw(facedir)
+ object:setyaw(yaw)
+ entity.mesh_id = id
end
end
end,
- on_receive_fields = function(pos, formname, fields, sender)
- if fields.connect then
- local minp = minetest.string_to_pos(fields.minp)
- local maxp = minetest.string_to_pos(fields.maxp)
- if is_valid_pos(minp) and is_valid_pos(maxp) then
- local node = minetest.get_node(pos)
- minetest.remove_node(pos)
- local positions = {}
- local parent = minetest.add_entity(pos, "meshnode:ctrl")
- if parent then
- for x = minp.x, maxp.x, get_step(minp.x, maxp.x) do
- for y = minp.y, maxp.y, get_step(minp.y, maxp.y) do
- for z = minp.z, maxp.z, get_step(minp.z, maxp.z) do
- local node_pos = vector.add(pos, {x=x, y=y, z=z})
- meshnode:create(node_pos, parent)
- table.insert(positions, node_pos)
+ on_rightclick = function(pos, node, clicker, itemstack)
+ show_meshnode_formspec(pos, clicker)
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = stack:get_metadata()
+ if meta then
+ if vector.equals(minetest.string_to_pos(meta), pos) then
+ return 1
+ end
+ end
+ return 0
+ end,
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ show_meshnode_formspec(pos, player)
+ end,
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ show_meshnode_formspec(pos, player)
+ end
+})
+
+minetest.register_tool("meshnode:glue", {
+ description = S("Meshnode Glue"),
+ inventory_image = "meshnode_glue.png",
+ liquids_pointable = true,
+ on_use = function(itemstack, user, pointed_thing)
+ local meta = itemstack:get_metadata()
+ local parent = meshnode.get_luaentity(meta)
+ if not parent then
+ return
+ end
+ local name = user:get_player_name()
+ if not has_privilege(name) then
+ return ""
+ end
+ if pointed_thing and pointed_thing.type == "node" then
+ local pos = minetest.get_pointed_thing_position(pointed_thing)
+ if pos then
+ if minetest.is_protected(pos, name) then
+ minetest.chat_send_player(name, S("Protected node").."!")
+ return
+ end
+ local node = minetest.get_node_or_nil(pos)
+ if node then
+ if string.find(node.name, "meshnode:scaffold") then
+ for i, ref in pairs(parent.nodes) do
+ local map_pos = meshnode.get_map_pos(ref, parent)
+ if vector.equals(map_pos, pos) then
+ meshnode.restore(ref, parent)
+ parent.nodes[i] = nil
end
end
- end
- for _, pos in pairs(positions) do
- minetest.remove_node(pos)
+ else
+ local dist = vector.distance(parent.object:getpos(), pos)
+ if dist > meshnode.config.max_radius then
+ minetest.chat_send_player(name, S("Out of range").."!")
+ else
+ meshnode.create(pos, parent)
+ end
end
end
- else
- local name = sender:get_player_name()
- minetest.chat_send_player(name, "Invalid Position!")
end
end
end,
})
+minetest.register_on_player_receive_fields(function(player, formname, fields)
+ if formname then
+ local id = formname:gsub("meshnode_", "")
+ if id == formname then
+ return
+ end
+ local name = player:get_player_name()
+ local entity = meshnode.get_luaentity(id)
+ if not entity then
+ return
+ end
+ local pos = vector.round(entity.object:getpos())
+ if fields.activate then
+ local id = meshnode.new_id()
+ entity.mesh_id = meshnode.new_id()
+ entity:set_activated(true)
+ for _, ref in pairs(entity.nodes) do
+ local map_pos = meshnode.get_map_pos(ref, entity)
+ minetest.remove_node(map_pos)
+ ref.parent = id
+ end
+ minetest.remove_node(pos)
+ elseif fields.connect_meta then
+ local node = minetest.get_node(pos)
+ local meta = minetest.get_meta(pos)
+ local spos = meta:get_string("meshnode")
+ local positions = minetest.deserialize(spos) or {}
+ for _, p in pairs(positions) do
+ meshnode.create(p, entity)
+ end
+ elseif fields.connect_we then
+ if has_worldedit then
+ local p1 = worldedit.pos1[name]
+ local p2 = worldedit.pos2[name]
+ if p1 and p2 then
+ local area = VoxelArea:new{MinEdge=p1, MaxEdge=p2}
+ for i in area:iterp(p1, p2) do
+ local p = area:position(i)
+ meshnode.create(p, entity)
+ end
+ end
+ end
+ elseif fields.reset then
+ meshnode.restore_all(entity)
+ entity.nodes = {}
+ elseif fields.attach and entity.player == nil then
+ player:set_attach(entity.object, "", {x=0, y=15, z=0}, {x=0, y=0, z=0})
+ entity.player = player
+ entity.object:set_animation({x=0, y=0}, 15)
+ default.player_attached[name] = true
+ elseif fields.detach and entity.player == player then
+ player:set_detach()
+ entity.player = nil
+ entity.animation = "stand"
+ entity.object:set_animation({x=20, y=100}, 15)
+ default.player_attached[name] = false
+ elseif fields.animation_sit then
+ default.player_set_animation(player, "sit", 30)
+ entity.animation = "sit"
+ elseif fields.animation_stand then
+ default.player_set_animation(player, "stand", 30)
+ entity.animation = "stand"
+ elseif fields.align then
+ entity:set_alignment()
+ elseif fields.restore then
+ if not has_privilege(name) then
+ local msg = S("Requires the meshnode privilege")
+ minetest.chat_send_player(name, msg)
+ return
+ end
+ entity:set_alignment()
+ local positions = meshnode.restore_all(entity, name)
+ if positions then
+ local yaw = entity.object:getyaw()
+ local node = {
+ name = "meshnode:controller",
+ param2 = meshnode.yaw_to_facedir(yaw),
+ }
+ minetest.add_node(pos, node)
+ if #positions > 0 then
+ local meta = minetest.get_meta(pos)
+ local spos = minetest.serialize(positions)
+ meta:set_string("meshnode", spos)
+ end
+ entity.nodes = {}
+ entity.mesh_id = minetest.pos_to_string(pos)
+ entity:set_activated(false)
+ else
+ minetest.chat_send_player(name, S("Protected area").."!")
+ end
+ end
+ end
+end)
+
diff --git a/meshnode.conf.example b/meshnode.conf.example
deleted file mode 100644
index c92eb20..0000000
--- a/meshnode.conf.example
+++ /dev/null
@@ -1,17 +0,0 @@
--- Meshnode configuration (defaults)
-
--- Maximum Entity Speed
-MESHNODE_MAX_SPEED = 2
-
--- Maximum Up/Down Velocity
-MESHNODE_MAX_LIFT = 1
-
--- Rotational Step (Radians)
-MESHNODE_YAW_AMOUNT = 0.02
-
--- Maximum Entity Area
-MESHNODE_MAX_RADIUS = 50
-
--- Show Controller in Creative Inventory
-MESHNODE_SHOW_IN_CREATIVE = true
-
diff --git a/meshnode.lua b/meshnode.lua
deleted file mode 100644
index 4b74a70..0000000
--- a/meshnode.lua
+++ /dev/null
@@ -1,111 +0,0 @@
-MESHNODE_MAX_SPEED = 2
-MESHNODE_MAX_LIFT = 1
-MESHNODE_YAW_AMOUNT = 0.02
-MESHNODE_MAX_RADIUS = 50
-MESHNODE_SHOW_IN_CREATIVE = true
-
-meshnode = {
- face_rotation = {
- {x=0, y=0, z=0}, {x=0, y=90, z=0}, {x=0, y=180, z=0}, {x=0, y=-90, z=0},
- {x=90, y=0, z=0}, {x=90, y=0, z=90}, {x=90, y=0, z=180}, {x=90, y=0, z=-90},
- {x=-90, y=0, z=0}, {x=-90, y=0, z=-90}, {x=-90, y=0, z=180}, {x=-90, y=0, z=90},
- {x=0, y=0, z=-90}, {x=90, y=90, z=0}, {x=180, y=0, z=90}, {x=0, y=-90, z=-90},
- {x=0, y=0, z=90}, {x=0, y=90, z=90}, {x=180, y=0, z=-90}, {x=0, y=-90, z=90},
- {x=180, y=180, z=0}, {x=180, y=90, z=0}, {x=180, y=0, z=0}, {x=180, y=-90, z=0},
- }
-}
-
-local modpath = minetest.get_modpath(minetest.get_current_modname())
-local input = io.open(modpath.."/meshnode.conf", "r")
-if input then
- dofile(modpath.."/meshnode.conf")
- input:close()
- input = nil
-end
-
-function meshnode:get_drawtype(pos)
- local node = minetest.get_node(pos)
- local item = minetest.registered_items[node.name]
- if item then
- return item.drawtype
- end
-end
-
-function meshnode:create(pos, parent)
- local node = minetest.get_node(pos)
- local item = minetest.registered_items[node.name]
- local object = nil
- local rotation = {x=0, y=0, z=0}
- if item then
- if item.tiles then
- local t = item.tiles
- local textures = {t[1], t[1], t[1], t[1], t[1], t[1]}
- if #t == 3 then
- textures = {t[1], t[2], t[3], t[3], t[3], t[3]}
- elseif #t == 6 then
- textures = t
- end
- local properties = {textures=textures}
- if item.drawtype == "fencelike" then
- textures = {
- "meshnode_trans.png",
- "meshnode_trans.png",
- "meshnode_trans.png",
- "meshnode_trans.png",
- t[1],
- }
- local p = pos
- if self:get_drawtype({x=p.x, y=p.y, z=p.z + 1}) == "fencelike" then
- textures[1] = t[1]
- end
- if self:get_drawtype({x=p.x - 1, y=p.y, z=p.z}) == "fencelike" then
- textures[2] = t[1]
- end
- if self:get_drawtype({x=p.x + 1, y=p.y, z=p.z}) == "fencelike" then
- textures[3] = t[1]
- end
- if self:get_drawtype({x=p.x, y=p.y, z=p.z - 1}) == "fencelike" then
- textures[4] = t[1]
- end
- object = minetest.add_entity(pos, "meshnode:mesh")
- properties.textures = textures
- properties.mesh = "meshnode_fence.x"
- properties.visual = "mesh"
- elseif item.drawtype == "plantlike" then
- object = minetest.add_entity(pos, "meshnode:mesh")
- properties.textures = {textures[1]}
- properties.mesh = "meshnode_plant.x"
- properties.visual = "mesh"
- elseif string.find(node.name, "stairs:slab") then
- object = minetest.add_entity(pos, "meshnode:mesh")
- properties.textures = {textures[1]}
- properties.mesh = "meshnode_slab.x"
- properties.visual = "mesh"
- elseif string.find(node.name, "stairs:stair") then
- object = minetest.add_entity(pos, "meshnode:mesh")
- properties.textures = {textures[1]}
- properties.mesh = "meshnode_stair.x"
- properties.visual = "mesh"
- elseif item.drawtype == "normal" or
- item.drawtype == "allfaces_optional" or
- item.drawtype == "glasslike" then
- object = minetest.add_entity(pos, "meshnode:mesh")
- properties.visual = "cube"
- end
- if object then
- object:set_properties(properties)
- local facedir = node.param2
- if item.paramtype2 == "facedir" and facedir then
- rotation = self.face_rotation[facedir + 1]
- end
- if parent then
- local offset = vector.subtract(pos, parent:getpos())
- offset = vector.multiply(offset, {x=10,y=10,z=10})
- object:set_attach(parent, "", offset, rotation)
- end
- end
- end
- end
- return object, rotation
-end
-
diff --git a/mod.conf b/mod.conf
new file mode 100644
index 0000000..2932564
--- /dev/null
+++ b/mod.conf
@@ -0,0 +1 @@
+name = meshnode
diff --git a/models/meshnode_ctrl.b3d b/models/meshnode_ctrl.b3d
new file mode 100644
index 0000000..f0fa340
Binary files /dev/null and b/models/meshnode_ctrl.b3d differ
diff --git a/models/meshnode_ctrl.obj b/models/meshnode_ctrl.obj
new file mode 100644
index 0000000..3b211dc
--- /dev/null
+++ b/models/meshnode_ctrl.obj
@@ -0,0 +1,1348 @@
+# Blender v2.76 (sub 0) OBJ File: 'meshnode_obj.blend'
+# www.blender.org
+mtllib meshnode_ctrl.mtl
+v -0.375000 -0.375000 0.375000
+v -0.375000 0.375000 0.375000
+v -0.375000 -0.375000 -0.375000
+v -0.375000 0.375000 -0.375000
+v 0.375000 -0.375000 0.375000
+v 0.375000 0.375000 0.375000
+v 0.375000 -0.375000 -0.375000
+v 0.375000 0.375000 -0.375000
+v -0.375000 0.000000 0.375000
+v -0.375000 0.375000 0.000000
+v -0.375000 0.000000 -0.375000
+v -0.375000 -0.375000 0.000000
+v 0.000000 0.375000 -0.375000
+v 0.375000 0.000000 -0.375000
+v 0.000000 -0.375000 -0.375000
+v 0.375000 0.375000 0.000000
+v 0.375000 0.000000 0.375000
+v 0.375000 -0.375000 0.000000
+v 0.000000 0.375000 0.375000
+v 0.000000 -0.375000 0.375000
+v 0.000000 0.375000 0.000000
+v 0.000000 -0.375000 0.000000
+v 0.000000 0.000000 0.375000
+v 0.375000 0.000000 0.000000
+v 0.000000 0.000000 -0.375000
+v -0.375000 0.000000 0.000000
+v -0.125000 0.250000 0.125000
+v -0.125000 0.500000 0.125000
+v -0.125000 0.250000 -0.125000
+v -0.125000 0.500000 -0.125000
+v 0.125000 0.250000 0.125000
+v 0.125000 0.500000 0.125000
+v 0.125000 0.250000 -0.125000
+v 0.125000 0.500000 -0.125000
+v -0.125000 0.375000 0.125000
+v -0.125000 0.500000 0.000000
+v -0.125000 0.375000 -0.125000
+v -0.125000 0.250000 0.000000
+v 0.000000 0.500000 -0.125000
+v 0.125000 0.375000 -0.125000
+v 0.000000 0.250000 -0.125000
+v 0.125000 0.500000 0.000000
+v 0.125000 0.375000 0.125000
+v 0.125000 0.250000 0.000000
+v 0.000000 0.500000 0.125000
+v 0.000000 0.250000 0.125000
+v 0.000000 0.500000 0.000000
+v 0.000000 0.250000 0.000000
+v 0.000000 0.375000 0.125000
+v 0.125000 0.375000 0.000000
+v 0.000000 0.375000 -0.125000
+v -0.125000 0.375000 0.000000
+v -0.125000 0.250000 -0.250000
+v -0.125000 0.500000 -0.250000
+v -0.125000 0.250000 -0.500000
+v -0.125000 0.500000 -0.500000
+v 0.125000 0.250000 -0.250000
+v 0.125000 0.500000 -0.250000
+v 0.125000 0.250000 -0.500000
+v 0.125000 0.500000 -0.500000
+v -0.125000 0.375000 -0.250000
+v -0.125000 0.500000 -0.375000
+v -0.125000 0.375000 -0.500000
+v -0.125000 0.250000 -0.375000
+v 0.000000 0.500000 -0.500000
+v 0.125000 0.375000 -0.500000
+v 0.000000 0.250000 -0.500000
+v 0.125000 0.500000 -0.375000
+v 0.125000 0.375000 -0.250000
+v 0.125000 0.250000 -0.375000
+v 0.000000 0.500000 -0.250000
+v 0.000000 0.250000 -0.250000
+v 0.000000 0.500000 -0.375000
+v 0.000000 0.250000 -0.375000
+v 0.000000 0.375000 -0.250000
+v 0.125000 0.375000 -0.375000
+v 0.000000 0.375000 -0.500000
+v -0.125000 0.375000 -0.375000
+v -0.125000 -0.125000 0.500000
+v -0.125000 0.125000 0.500000
+v -0.125000 -0.125000 0.250000
+v -0.125000 0.125000 0.250000
+v 0.125000 -0.125000 0.500000
+v 0.125000 0.125000 0.500000
+v 0.125000 -0.125000 0.250000
+v 0.125000 0.125000 0.250000
+v -0.125000 0.000000 0.500000
+v -0.125000 0.125000 0.375000
+v -0.125000 0.000000 0.250000
+v -0.125000 -0.125000 0.375000
+v 0.000000 0.125000 0.250000
+v 0.125000 0.000000 0.250000
+v 0.000000 -0.125000 0.250000
+v 0.125000 0.125000 0.375000
+v 0.125000 0.000000 0.500000
+v 0.125000 -0.125000 0.375000
+v 0.000000 0.125000 0.500000
+v 0.000000 -0.125000 0.500000
+v 0.000000 0.125000 0.375000
+v 0.000000 -0.125000 0.375000
+v 0.000000 0.000000 0.500000
+v 0.125000 0.000000 0.375000
+v 0.000000 0.000000 0.250000
+v -0.125000 0.000000 0.375000
+v 0.250000 -0.125000 0.125000
+v 0.250000 0.125000 0.125000
+v 0.250000 -0.125000 -0.125000
+v 0.250000 0.125000 -0.125000
+v 0.500000 -0.125000 0.125000
+v 0.500000 0.125000 0.125000
+v 0.500000 -0.125000 -0.125000
+v 0.500000 0.125000 -0.125000
+v 0.250000 0.000000 0.125000
+v 0.250000 0.125000 0.000000
+v 0.250000 0.000000 -0.125000
+v 0.250000 -0.125000 0.000000
+v 0.375000 0.125000 -0.125000
+v 0.500000 0.000000 -0.125000
+v 0.375000 -0.125000 -0.125000
+v 0.500000 0.125000 0.000000
+v 0.500000 0.000000 0.125000
+v 0.500000 -0.125000 0.000000
+v 0.375000 0.125000 0.125000
+v 0.375000 -0.125000 0.125000
+v 0.375000 0.125000 0.000000
+v 0.375000 -0.125000 0.000000
+v 0.375000 0.000000 0.125000
+v 0.500000 0.000000 0.000000
+v 0.375000 0.000000 -0.125000
+v 0.250000 0.000000 0.000000
+v 0.250000 -0.125000 -0.250000
+v 0.250000 0.125000 -0.250000
+v 0.250000 -0.125000 -0.500000
+v 0.250000 0.125000 -0.500000
+v 0.500000 -0.125000 -0.250000
+v 0.500000 0.125000 -0.250000
+v 0.500000 -0.125000 -0.500000
+v 0.500000 0.125000 -0.500000
+v 0.250000 0.000000 -0.250000
+v 0.250000 0.125000 -0.375000
+v 0.250000 0.000000 -0.500000
+v 0.250000 -0.125000 -0.375000
+v 0.375000 0.125000 -0.500000
+v 0.500000 0.000000 -0.500000
+v 0.375000 -0.125000 -0.500000
+v 0.500000 0.125000 -0.375000
+v 0.500000 0.000000 -0.250000
+v 0.500000 -0.125000 -0.375000
+v 0.375000 0.125000 -0.250000
+v 0.375000 -0.125000 -0.250000
+v 0.375000 0.125000 -0.375000
+v 0.375000 -0.125000 -0.375000
+v 0.375000 0.000000 -0.250000
+v 0.500000 0.000000 -0.375000
+v 0.375000 0.000000 -0.500000
+v 0.250000 0.000000 -0.375000
+v 0.250000 -0.125000 0.500000
+v 0.250000 0.125000 0.500000
+v 0.250000 -0.125000 0.250000
+v 0.250000 0.125000 0.250000
+v 0.500000 -0.125000 0.500000
+v 0.500000 0.125000 0.500000
+v 0.500000 -0.125000 0.250000
+v 0.500000 0.125000 0.250000
+v 0.250000 0.000000 0.500000
+v 0.250000 0.125000 0.375000
+v 0.250000 0.000000 0.250000
+v 0.250000 -0.125000 0.375000
+v 0.375000 0.125000 0.250000
+v 0.500000 0.000000 0.250000
+v 0.375000 -0.125000 0.250000
+v 0.500000 0.125000 0.375000
+v 0.500000 0.000000 0.500000
+v 0.500000 -0.125000 0.375000
+v 0.375000 0.125000 0.500000
+v 0.375000 -0.125000 0.500000
+v 0.375000 0.125000 0.375000
+v 0.375000 -0.125000 0.375000
+v 0.375000 0.000000 0.500000
+v 0.500000 0.000000 0.375000
+v 0.375000 0.000000 0.250000
+v 0.250000 0.000000 0.375000
+v -0.500000 -0.125000 0.125000
+v -0.500000 0.125000 0.125000
+v -0.500000 -0.125000 -0.125000
+v -0.500000 0.125000 -0.125000
+v -0.250000 -0.125000 0.125000
+v -0.250000 0.125000 0.125000
+v -0.250000 -0.125000 -0.125000
+v -0.250000 0.125000 -0.125000
+v -0.500000 0.000000 0.125000
+v -0.500000 0.125000 0.000000
+v -0.500000 0.000000 -0.125000
+v -0.500000 -0.125000 0.000000
+v -0.375000 0.125000 -0.125000
+v -0.250000 0.000000 -0.125000
+v -0.375000 -0.125000 -0.125000
+v -0.250000 0.125000 0.000000
+v -0.250000 0.000000 0.125000
+v -0.250000 -0.125000 0.000000
+v -0.375000 0.125000 0.125000
+v -0.375000 -0.125000 0.125000
+v -0.375000 0.125000 0.000000
+v -0.375000 -0.125000 0.000000
+v -0.375000 0.000000 0.125000
+v -0.250000 0.000000 0.000000
+v -0.375000 0.000000 -0.125000
+v -0.500000 0.000000 0.000000
+v -0.500000 -0.125000 -0.250000
+v -0.500000 0.125000 -0.250000
+v -0.500000 -0.125000 -0.500000
+v -0.500000 0.125000 -0.500000
+v -0.250000 -0.125000 -0.250000
+v -0.250000 0.125000 -0.250000
+v -0.250000 -0.125000 -0.500000
+v -0.250000 0.125000 -0.500000
+v -0.500000 0.000000 -0.250000
+v -0.500000 0.125000 -0.375000
+v -0.500000 0.000000 -0.500000
+v -0.500000 -0.125000 -0.375000
+v -0.375000 0.125000 -0.500000
+v -0.250000 0.000000 -0.500000
+v -0.375000 -0.125000 -0.500000
+v -0.250000 0.125000 -0.375000
+v -0.250000 0.000000 -0.250000
+v -0.250000 -0.125000 -0.375000
+v -0.375000 0.125000 -0.250000
+v -0.375000 -0.125000 -0.250000
+v -0.375000 0.125000 -0.375000
+v -0.375000 -0.125000 -0.375000
+v -0.375000 0.000000 -0.250000
+v -0.250000 0.000000 -0.375000
+v -0.375000 0.000000 -0.500000
+v -0.500000 0.000000 -0.375000
+v -0.500000 -0.125000 0.500000
+v -0.500000 0.125000 0.500000
+v -0.500000 -0.125000 0.250000
+v -0.500000 0.125000 0.250000
+v -0.250000 -0.125000 0.500000
+v -0.250000 0.125000 0.500000
+v -0.250000 -0.125000 0.250000
+v -0.250000 0.125000 0.250000
+v -0.500000 0.000000 0.500000
+v -0.500000 0.125000 0.375000
+v -0.500000 0.000000 0.250000
+v -0.500000 -0.125000 0.375000
+v -0.375000 0.125000 0.250000
+v -0.250000 0.000000 0.250000
+v -0.375000 -0.125000 0.250000
+v -0.250000 0.125000 0.375000
+v -0.250000 0.000000 0.500000
+v -0.250000 -0.125000 0.375000
+v -0.375000 0.125000 0.500000
+v -0.375000 -0.125000 0.500000
+v -0.375000 0.125000 0.375000
+v -0.375000 -0.125000 0.375000
+v -0.375000 0.000000 0.500000
+v -0.250000 0.000000 0.375000
+v -0.375000 0.000000 0.250000
+v -0.500000 0.000000 0.375000
+v -0.125000 -0.125000 -0.250000
+v -0.125000 0.125000 -0.250000
+v -0.125000 -0.125000 -0.500000
+v -0.125000 0.125000 -0.500000
+v 0.125000 -0.125000 -0.250000
+v 0.125000 0.125000 -0.250000
+v 0.125000 -0.125000 -0.500000
+v 0.125000 0.125000 -0.500000
+v -0.125000 0.000000 -0.250000
+v -0.125000 0.125000 -0.375000
+v -0.125000 0.000000 -0.500000
+v -0.125000 -0.125000 -0.375000
+v 0.000000 0.125000 -0.500000
+v 0.125000 0.000000 -0.500000
+v 0.000000 -0.125000 -0.500000
+v 0.125000 0.125000 -0.375000
+v 0.125000 0.000000 -0.250000
+v 0.125000 -0.125000 -0.375000
+v 0.000000 0.125000 -0.250000
+v 0.000000 -0.125000 -0.250000
+v 0.000000 0.125000 -0.375000
+v 0.000000 -0.125000 -0.375000
+v 0.000000 0.000000 -0.250000
+v 0.125000 0.000000 -0.375000
+v 0.000000 0.000000 -0.500000
+v -0.125000 0.000000 -0.375000
+v -0.125000 -0.500000 -0.250000
+v -0.125000 -0.250000 -0.250000
+v -0.125000 -0.500000 -0.500000
+v -0.125000 -0.250000 -0.500000
+v 0.125000 -0.500000 -0.250000
+v 0.125000 -0.250000 -0.250000
+v 0.125000 -0.500000 -0.500000
+v 0.125000 -0.250000 -0.500000
+v -0.125000 -0.375000 -0.250000
+v -0.125000 -0.250000 -0.375000
+v -0.125000 -0.375000 -0.500000
+v -0.125000 -0.500000 -0.375000
+v 0.000000 -0.250000 -0.500000
+v 0.125000 -0.375000 -0.500000
+v 0.000000 -0.500000 -0.500000
+v 0.125000 -0.250000 -0.375000
+v 0.125000 -0.375000 -0.250000
+v 0.125000 -0.500000 -0.375000
+v 0.000000 -0.250000 -0.250000
+v 0.000000 -0.500000 -0.250000
+v 0.000000 -0.250000 -0.375000
+v 0.000000 -0.500000 -0.375000
+v 0.000000 -0.375000 -0.250000
+v 0.125000 -0.375000 -0.375000
+v 0.000000 -0.375000 -0.500000
+v -0.125000 -0.375000 -0.375000
+v -0.125000 0.250000 0.500000
+v -0.125000 0.500000 0.500000
+v -0.125000 0.250000 0.250000
+v -0.125000 0.500000 0.250000
+v 0.125000 0.250000 0.500000
+v 0.125000 0.500000 0.500000
+v 0.125000 0.250000 0.250000
+v 0.125000 0.500000 0.250000
+v -0.125000 0.375000 0.500000
+v -0.125000 0.500000 0.375000
+v -0.125000 0.375000 0.250000
+v -0.125000 0.250000 0.375000
+v 0.000000 0.500000 0.250000
+v 0.125000 0.375000 0.250000
+v 0.000000 0.250000 0.250000
+v 0.125000 0.500000 0.375000
+v 0.125000 0.375000 0.500000
+v 0.125000 0.250000 0.375000
+v 0.000000 0.500000 0.500000
+v 0.000000 0.250000 0.500000
+v 0.000000 0.500000 0.375000
+v 0.000000 0.250000 0.375000
+v 0.000000 0.375000 0.500000
+v 0.125000 0.375000 0.375000
+v 0.000000 0.375000 0.250000
+v -0.125000 0.375000 0.375000
+v -0.125000 -0.500000 0.500000
+v -0.125000 -0.250000 0.500000
+v -0.125000 -0.500000 0.250000
+v -0.125000 -0.250000 0.250000
+v 0.125000 -0.500000 0.500000
+v 0.125000 -0.250000 0.500000
+v 0.125000 -0.500000 0.250000
+v 0.125000 -0.250000 0.250000
+v -0.125000 -0.375000 0.500000
+v -0.125000 -0.250000 0.375000
+v -0.125000 -0.375000 0.250000
+v -0.125000 -0.500000 0.375000
+v 0.000000 -0.250000 0.250000
+v 0.125000 -0.375000 0.250000
+v 0.000000 -0.500000 0.250000
+v 0.125000 -0.250000 0.375000
+v 0.125000 -0.375000 0.500000
+v 0.125000 -0.500000 0.375000
+v 0.000000 -0.250000 0.500000
+v 0.000000 -0.500000 0.500000
+v 0.000000 -0.250000 0.375000
+v 0.000000 -0.500000 0.375000
+v 0.000000 -0.375000 0.500000
+v 0.125000 -0.375000 0.375000
+v 0.000000 -0.375000 0.250000
+v -0.125000 -0.375000 0.375000
+v 0.250000 -0.500000 0.500000
+v 0.250000 -0.250000 0.500000
+v 0.250000 -0.500000 0.250000
+v 0.250000 -0.250000 0.250000
+v 0.500000 -0.500000 0.500000
+v 0.500000 -0.250000 0.500000
+v 0.500000 -0.500000 0.250000
+v 0.500000 -0.250000 0.250000
+v 0.250000 -0.375000 0.500000
+v 0.250000 -0.250000 0.375000
+v 0.250000 -0.375000 0.250000
+v 0.250000 -0.500000 0.375000
+v 0.375000 -0.250000 0.250000
+v 0.500000 -0.375000 0.250000
+v 0.375000 -0.500000 0.250000
+v 0.500000 -0.250000 0.375000
+v 0.500000 -0.375000 0.500000
+v 0.500000 -0.500000 0.375000
+v 0.375000 -0.250000 0.500000
+v 0.375000 -0.500000 0.500000
+v 0.375000 -0.250000 0.375000
+v 0.375000 -0.500000 0.375000
+v 0.375000 -0.375000 0.500000
+v 0.500000 -0.375000 0.375000
+v 0.375000 -0.375000 0.250000
+v 0.250000 -0.375000 0.375000
+v 0.250000 -0.500000 0.125000
+v 0.250000 -0.250000 0.125000
+v 0.250000 -0.500000 -0.125000
+v 0.250000 -0.250000 -0.125000
+v 0.500000 -0.500000 0.125000
+v 0.500000 -0.250000 0.125000
+v 0.500000 -0.500000 -0.125000
+v 0.500000 -0.250000 -0.125000
+v 0.250000 -0.375000 0.125000
+v 0.250000 -0.250000 0.000000
+v 0.250000 -0.375000 -0.125000
+v 0.250000 -0.500000 0.000000
+v 0.375000 -0.250000 -0.125000
+v 0.500000 -0.375000 -0.125000
+v 0.375000 -0.500000 -0.125000
+v 0.500000 -0.250000 0.000000
+v 0.500000 -0.375000 0.125000
+v 0.500000 -0.500000 0.000000
+v 0.375000 -0.250000 0.125000
+v 0.375000 -0.500000 0.125000
+v 0.375000 -0.250000 0.000000
+v 0.375000 -0.500000 0.000000
+v 0.375000 -0.375000 0.125000
+v 0.500000 -0.375000 0.000000
+v 0.375000 -0.375000 -0.125000
+v 0.250000 -0.375000 0.000000
+v 0.250000 -0.500000 -0.250000
+v 0.250000 -0.250000 -0.250000
+v 0.250000 -0.500000 -0.500000
+v 0.250000 -0.250000 -0.500000
+v 0.500000 -0.500000 -0.250000
+v 0.500000 -0.250000 -0.250000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 -0.250000 -0.500000
+v 0.250000 -0.375000 -0.250000
+v 0.250000 -0.250000 -0.375000
+v 0.250000 -0.375000 -0.500000
+v 0.250000 -0.500000 -0.375000
+v 0.375000 -0.250000 -0.500000
+v 0.500000 -0.375000 -0.500000
+v 0.375000 -0.500000 -0.500000
+v 0.500000 -0.250000 -0.375000
+v 0.500000 -0.375000 -0.250000
+v 0.500000 -0.500000 -0.375000
+v 0.375000 -0.250000 -0.250000
+v 0.375000 -0.500000 -0.250000
+v 0.375000 -0.250000 -0.375000
+v 0.375000 -0.500000 -0.375000
+v 0.375000 -0.375000 -0.250000
+v 0.500000 -0.375000 -0.375000
+v 0.375000 -0.375000 -0.500000
+v 0.250000 -0.375000 -0.375000
+v -0.500000 -0.500000 0.500000
+v -0.500000 -0.250000 0.500000
+v -0.500000 -0.500000 0.250000
+v -0.500000 -0.250000 0.250000
+v -0.250000 -0.500000 0.500000
+v -0.250000 -0.250000 0.500000
+v -0.250000 -0.500000 0.250000
+v -0.250000 -0.250000 0.250000
+v -0.500000 -0.375000 0.500000
+v -0.500000 -0.250000 0.375000
+v -0.500000 -0.375000 0.250000
+v -0.500000 -0.500000 0.375000
+v -0.375000 -0.250000 0.250000
+v -0.250000 -0.375000 0.250000
+v -0.375000 -0.500000 0.250000
+v -0.250000 -0.250000 0.375000
+v -0.250000 -0.375000 0.500000
+v -0.250000 -0.500000 0.375000
+v -0.375000 -0.250000 0.500000
+v -0.375000 -0.500000 0.500000
+v -0.375000 -0.250000 0.375000
+v -0.375000 -0.500000 0.375000
+v -0.375000 -0.375000 0.500000
+v -0.250000 -0.375000 0.375000
+v -0.375000 -0.375000 0.250000
+v -0.500000 -0.375000 0.375000
+v -0.500000 -0.500000 0.125000
+v -0.500000 -0.250000 0.125000
+v -0.500000 -0.500000 -0.125000
+v -0.500000 -0.250000 -0.125000
+v -0.250000 -0.500000 0.125000
+v -0.250000 -0.250000 0.125000
+v -0.250000 -0.500000 -0.125000
+v -0.250000 -0.250000 -0.125000
+v -0.500000 -0.375000 0.125000
+v -0.500000 -0.250000 0.000000
+v -0.500000 -0.375000 -0.125000
+v -0.500000 -0.500000 0.000000
+v -0.375000 -0.250000 -0.125000
+v -0.250000 -0.375000 -0.125000
+v -0.375000 -0.500000 -0.125000
+v -0.250000 -0.250000 0.000000
+v -0.250000 -0.375000 0.125000
+v -0.250000 -0.500000 0.000000
+v -0.375000 -0.250000 0.125000
+v -0.375000 -0.500000 0.125000
+v -0.375000 -0.250000 0.000000
+v -0.375000 -0.500000 0.000000
+v -0.375000 -0.375000 0.125000
+v -0.250000 -0.375000 0.000000
+v -0.375000 -0.375000 -0.125000
+v -0.500000 -0.375000 0.000000
+v -0.500000 -0.500000 -0.250000
+v -0.500000 -0.250000 -0.250000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 -0.250000 -0.500000
+v -0.250000 -0.500000 -0.250000
+v -0.250000 -0.250000 -0.250000
+v -0.250000 -0.500000 -0.500000
+v -0.250000 -0.250000 -0.500000
+v -0.500000 -0.375000 -0.250000
+v -0.500000 -0.250000 -0.375000
+v -0.500000 -0.375000 -0.500000
+v -0.500000 -0.500000 -0.375000
+v -0.375000 -0.250000 -0.500000
+v -0.250000 -0.375000 -0.500000
+v -0.375000 -0.500000 -0.500000
+v -0.250000 -0.250000 -0.375000
+v -0.250000 -0.375000 -0.250000
+v -0.250000 -0.500000 -0.375000
+v -0.375000 -0.250000 -0.250000
+v -0.375000 -0.500000 -0.250000
+v -0.375000 -0.250000 -0.375000
+v -0.375000 -0.500000 -0.375000
+v -0.375000 -0.375000 -0.250000
+v -0.250000 -0.375000 -0.375000
+v -0.375000 -0.375000 -0.500000
+v -0.500000 -0.375000 -0.375000
+v -0.500000 0.250000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 0.250000 0.250000
+v -0.500000 0.500000 0.250000
+v -0.250000 0.250000 0.500000
+v -0.250000 0.500000 0.500000
+v -0.250000 0.250000 0.250000
+v -0.250000 0.500000 0.250000
+v -0.500000 0.375000 0.500000
+v -0.500000 0.500000 0.375000
+v -0.500000 0.375000 0.250000
+v -0.500000 0.250000 0.375000
+v -0.375000 0.500000 0.250000
+v -0.250000 0.375000 0.250000
+v -0.375000 0.250000 0.250000
+v -0.250000 0.500000 0.375000
+v -0.250000 0.375000 0.500000
+v -0.250000 0.250000 0.375000
+v -0.375000 0.500000 0.500000
+v -0.375000 0.250000 0.500000
+v -0.375000 0.500000 0.375000
+v -0.375000 0.250000 0.375000
+v -0.375000 0.375000 0.500000
+v -0.250000 0.375000 0.375000
+v -0.375000 0.375000 0.250000
+v -0.500000 0.375000 0.375000
+v -0.500000 0.250000 0.125000
+v -0.500000 0.500000 0.125000
+v -0.500000 0.250000 -0.125000
+v -0.500000 0.500000 -0.125000
+v -0.250000 0.250000 0.125000
+v -0.250000 0.500000 0.125000
+v -0.250000 0.250000 -0.125000
+v -0.250000 0.500000 -0.125000
+v -0.500000 0.375000 0.125000
+v -0.500000 0.500000 0.000000
+v -0.500000 0.375000 -0.125000
+v -0.500000 0.250000 0.000000
+v -0.375000 0.500000 -0.125000
+v -0.250000 0.375000 -0.125000
+v -0.375000 0.250000 -0.125000
+v -0.250000 0.500000 0.000000
+v -0.250000 0.375000 0.125000
+v -0.250000 0.250000 0.000000
+v -0.375000 0.500000 0.125000
+v -0.375000 0.250000 0.125000
+v -0.375000 0.500000 0.000000
+v -0.375000 0.250000 0.000000
+v -0.375000 0.375000 0.125000
+v -0.250000 0.375000 0.000000
+v -0.375000 0.375000 -0.125000
+v -0.500000 0.375000 0.000000
+v -0.500000 0.250000 -0.250000
+v -0.500000 0.500000 -0.250000
+v -0.500000 0.250000 -0.500000
+v -0.500000 0.500000 -0.500000
+v -0.250000 0.250000 -0.250000
+v -0.250000 0.500000 -0.250000
+v -0.250000 0.250000 -0.500000
+v -0.250000 0.500000 -0.500000
+v -0.500000 0.375000 -0.250000
+v -0.500000 0.500000 -0.375000
+v -0.500000 0.375000 -0.500000
+v -0.500000 0.250000 -0.375000
+v -0.375000 0.500000 -0.500000
+v -0.250000 0.375000 -0.500000
+v -0.375000 0.250000 -0.500000
+v -0.250000 0.500000 -0.375000
+v -0.250000 0.375000 -0.250000
+v -0.250000 0.250000 -0.375000
+v -0.375000 0.500000 -0.250000
+v -0.375000 0.250000 -0.250000
+v -0.375000 0.500000 -0.375000
+v -0.375000 0.250000 -0.375000
+v -0.375000 0.375000 -0.250000
+v -0.250000 0.375000 -0.375000
+v -0.375000 0.375000 -0.500000
+v -0.500000 0.375000 -0.375000
+v 0.250000 0.250000 0.500000
+v 0.250000 0.500000 0.500000
+v 0.250000 0.250000 0.250000
+v 0.250000 0.500000 0.250000
+v 0.500000 0.250000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 0.250000 0.250000
+v 0.500000 0.500000 0.250000
+v 0.250000 0.375000 0.500000
+v 0.250000 0.500000 0.375000
+v 0.250000 0.375000 0.250000
+v 0.250000 0.250000 0.375000
+v 0.375000 0.500000 0.250000
+v 0.500000 0.375000 0.250000
+v 0.375000 0.250000 0.250000
+v 0.500000 0.500000 0.375000
+v 0.500000 0.375000 0.500000
+v 0.500000 0.250000 0.375000
+v 0.375000 0.500000 0.500000
+v 0.375000 0.250000 0.500000
+v 0.375000 0.500000 0.375000
+v 0.375000 0.250000 0.375000
+v 0.375000 0.375000 0.500000
+v 0.500000 0.375000 0.375000
+v 0.375000 0.375000 0.250000
+v 0.250000 0.375000 0.375000
+v 0.250000 0.250000 0.125000
+v 0.250000 0.500000 0.125000
+v 0.250000 0.250000 -0.125000
+v 0.250000 0.500000 -0.125000
+v 0.500000 0.250000 0.125000
+v 0.500000 0.500000 0.125000
+v 0.500000 0.250000 -0.125000
+v 0.500000 0.500000 -0.125000
+v 0.250000 0.375000 0.125000
+v 0.250000 0.500000 0.000000
+v 0.250000 0.375000 -0.125000
+v 0.250000 0.250000 0.000000
+v 0.375000 0.500000 -0.125000
+v 0.500000 0.375000 -0.125000
+v 0.375000 0.250000 -0.125000
+v 0.500000 0.500000 0.000000
+v 0.500000 0.375000 0.125000
+v 0.500000 0.250000 0.000000
+v 0.375000 0.500000 0.125000
+v 0.375000 0.250000 0.125000
+v 0.375000 0.500000 0.000000
+v 0.375000 0.250000 0.000000
+v 0.375000 0.375000 0.125000
+v 0.500000 0.375000 0.000000
+v 0.375000 0.375000 -0.125000
+v 0.250000 0.375000 0.000000
+v 0.250000 0.250000 -0.250000
+v 0.250000 0.500000 -0.250000
+v 0.250000 0.250000 -0.500000
+v 0.250000 0.500000 -0.500000
+v 0.500000 0.250000 -0.250000
+v 0.500000 0.500000 -0.250000
+v 0.500000 0.250000 -0.500000
+v 0.500000 0.500000 -0.500000
+v 0.250000 0.375000 -0.250000
+v 0.250000 0.500000 -0.375000
+v 0.250000 0.375000 -0.500000
+v 0.250000 0.250000 -0.375000
+v 0.375000 0.500000 -0.500000
+v 0.500000 0.375000 -0.500000
+v 0.375000 0.250000 -0.500000
+v 0.500000 0.500000 -0.375000
+v 0.500000 0.375000 -0.250000
+v 0.500000 0.250000 -0.375000
+v 0.375000 0.500000 -0.250000
+v 0.375000 0.250000 -0.250000
+v 0.375000 0.500000 -0.375000
+v 0.375000 0.250000 -0.375000
+v 0.375000 0.375000 -0.250000
+v 0.500000 0.375000 -0.375000
+v 0.375000 0.375000 -0.500000
+v 0.250000 0.375000 -0.375000
+vt 0.625000 0.625000
+vt 1.000000 0.625000
+vt 1.000000 1.000000
+vt 0.625000 1.000000
+vt 0.000000 0.625000
+vt 0.375000 0.625000
+vt 0.375000 1.000000
+vt 0.000000 1.000000
+vt -0.000000 -0.000000
+vt 0.375000 -0.000000
+vt 0.375000 0.375000
+vt -0.000000 0.375000
+vt 0.625000 0.000000
+vt 1.000000 0.000000
+vt 1.000000 0.375000
+vt 0.625000 0.375000
+vt 0.875000 0.875000
+vt 1.000000 0.875000
+vt 0.875000 1.000000
+vt 0.000000 0.875000
+vt 0.125000 0.875000
+vt 0.125000 1.000000
+vt 0.125000 -0.000000
+vt 0.125000 0.125000
+vt -0.000000 0.125000
+vt 0.875000 0.000000
+vt 1.000000 0.125000
+vt 0.875000 0.125000
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cube_Meshnode_Material_1
+usemtl Material_1
+s off
+f 26/1/1 11/2/1 3/3/1 12/4/1
+f 25/1/2 14/2/2 7/3/2 15/4/2
+f 24/1/3 17/2/3 5/3/3 18/4/3
+f 23/1/4 9/2/4 1/3/4 20/4/4
+f 22/1/5 15/2/5 7/3/5 18/4/5
+f 21/1/6 13/2/6 4/3/6 10/4/6
+f 19/5/6 21/6/6 10/7/6 2/8/6
+f 6/9/6 16/10/6 21/11/6 19/12/6
+f 16/13/6 8/14/6 13/15/6 21/16/6
+f 20/5/5 22/6/5 18/7/5 5/8/5
+f 1/9/5 12/10/5 22/11/5 20/12/5
+f 12/13/5 3/14/5 15/15/5 22/16/5
+f 17/5/4 23/6/4 20/7/4 5/8/4
+f 6/9/4 19/10/4 23/11/4 17/12/4
+f 19/13/4 2/14/4 9/15/4 23/16/4
+f 14/5/3 24/6/3 18/7/3 7/8/3
+f 8/9/3 16/10/3 24/11/3 14/12/3
+f 16/13/3 6/14/3 17/15/3 24/16/3
+f 11/5/2 25/6/2 15/7/2 3/8/2
+f 4/9/2 13/10/2 25/11/2 11/12/2
+f 13/13/2 8/14/2 14/15/2 25/16/2
+f 9/5/1 26/6/1 12/7/1 1/8/1
+f 2/9/1 10/10/1 26/11/1 9/12/1
+f 10/13/1 4/14/1 11/15/1 26/16/1
+g Cube_Meshnode_Material_2
+usemtl Material_2
+f 52/17/1 37/18/1 29/3/1 38/19/1
+f 51/17/2 40/18/2 33/3/2 41/19/2
+f 50/17/3 43/18/3 31/3/3 44/19/3
+f 49/17/4 35/18/4 27/3/4 46/19/4
+f 48/17/5 41/18/5 33/3/5 44/19/5
+f 47/17/6 39/18/6 30/3/6 36/19/6
+f 45/20/6 47/21/6 36/22/6 28/8/6
+f 32/9/6 42/23/6 47/24/6 45/25/6
+f 42/26/6 34/14/6 39/27/6 47/28/6
+f 46/20/5 48/21/5 44/22/5 31/8/5
+f 27/9/5 38/23/5 48/24/5 46/25/5
+f 38/26/5 29/14/5 41/27/5 48/28/5
+f 43/20/4 49/21/4 46/22/4 31/8/4
+f 32/9/4 45/23/4 49/24/4 43/25/4
+f 45/26/4 28/14/4 35/27/4 49/28/4
+f 40/20/3 50/21/3 44/22/3 33/8/3
+f 34/9/3 42/23/3 50/24/3 40/25/3
+f 42/26/3 32/14/3 43/27/3 50/28/3
+f 37/20/2 51/21/2 41/22/2 29/8/2
+f 30/9/2 39/23/2 51/24/2 37/25/2
+f 39/26/2 34/14/2 40/27/2 51/28/2
+f 35/20/1 52/21/1 38/22/1 27/8/1
+f 28/9/1 36/23/1 52/24/1 35/25/1
+f 36/26/1 30/14/1 37/27/1 52/28/1
+g Cube_Meshnode_Material_3
+usemtl Material_3
+f 78/17/1 63/18/1 55/3/1 64/19/1
+f 77/17/2 66/18/2 59/3/2 67/19/2
+f 76/17/3 69/18/3 57/3/3 70/19/3
+f 75/17/4 61/18/4 53/3/4 72/19/4
+f 74/17/5 67/18/5 59/3/5 70/19/5
+f 73/17/6 65/18/6 56/3/6 62/19/6
+f 71/20/6 73/21/6 62/22/6 54/8/6
+f 58/9/6 68/23/6 73/24/6 71/25/6
+f 68/26/6 60/14/6 65/27/6 73/28/6
+f 72/20/5 74/21/5 70/22/5 57/8/5
+f 53/9/5 64/23/5 74/24/5 72/25/5
+f 64/26/5 55/14/5 67/27/5 74/28/5
+f 69/20/4 75/21/4 72/22/4 57/8/4
+f 58/9/4 71/23/4 75/24/4 69/25/4
+f 71/26/4 54/14/4 61/27/4 75/28/4
+f 66/20/3 76/21/3 70/22/3 59/8/3
+f 60/9/3 68/23/3 76/24/3 66/25/3
+f 68/26/3 58/14/3 69/27/3 76/28/3
+f 63/20/2 77/21/2 67/22/2 55/8/2
+f 56/9/2 65/23/2 77/24/2 63/25/2
+f 65/26/2 60/14/2 66/27/2 77/28/2
+f 61/20/1 78/21/1 64/22/1 53/8/1
+f 54/9/1 62/23/1 78/24/1 61/25/1
+f 62/26/1 56/14/1 63/27/1 78/28/1
+f 130/17/1 115/18/1 107/3/1 116/19/1
+f 129/17/2 118/18/2 111/3/2 119/19/2
+f 128/17/3 121/18/3 109/3/3 122/19/3
+f 127/17/4 113/18/4 105/3/4 124/19/4
+f 126/17/5 119/18/5 111/3/5 122/19/5
+f 125/17/6 117/18/6 108/3/6 114/19/6
+f 123/20/6 125/21/6 114/22/6 106/8/6
+f 110/9/6 120/23/6 125/24/6 123/25/6
+f 120/26/6 112/14/6 117/27/6 125/28/6
+f 124/20/5 126/21/5 122/22/5 109/8/5
+f 105/9/5 116/23/5 126/24/5 124/25/5
+f 116/26/5 107/14/5 119/27/5 126/28/5
+f 121/20/4 127/21/4 124/22/4 109/8/4
+f 110/9/4 123/23/4 127/24/4 121/25/4
+f 123/26/4 106/14/4 113/27/4 127/28/4
+f 118/20/3 128/21/3 122/22/3 111/8/3
+f 112/9/3 120/23/3 128/24/3 118/25/3
+f 120/26/3 110/14/3 121/27/3 128/28/3
+f 115/20/2 129/21/2 119/22/2 107/8/2
+f 108/9/2 117/23/2 129/24/2 115/25/2
+f 117/26/2 112/14/2 118/27/2 129/28/2
+f 113/20/1 130/21/1 116/22/1 105/8/1
+f 106/9/1 114/23/1 130/24/1 113/25/1
+f 114/26/1 108/14/1 115/27/1 130/28/1
+f 156/17/1 141/18/1 133/3/1 142/19/1
+f 155/17/2 144/18/2 137/3/2 145/19/2
+f 154/17/3 147/18/3 135/3/3 148/19/3
+f 153/17/4 139/18/4 131/3/4 150/19/4
+f 152/17/5 145/18/5 137/3/5 148/19/5
+f 151/17/6 143/18/6 134/3/6 140/19/6
+f 149/20/6 151/21/6 140/22/6 132/8/6
+f 136/9/6 146/23/6 151/24/6 149/25/6
+f 146/26/6 138/14/6 143/27/6 151/28/6
+f 150/20/5 152/21/5 148/22/5 135/8/5
+f 131/9/5 142/23/5 152/24/5 150/25/5
+f 142/26/5 133/14/5 145/27/5 152/28/5
+f 147/20/4 153/21/4 150/22/4 135/8/4
+f 136/9/4 149/23/4 153/24/4 147/25/4
+f 149/26/4 132/14/4 139/27/4 153/28/4
+f 144/20/3 154/21/3 148/22/3 137/8/3
+f 138/9/3 146/23/3 154/24/3 144/25/3
+f 146/26/3 136/14/3 147/27/3 154/28/3
+f 141/20/2 155/21/2 145/22/2 133/8/2
+f 134/9/2 143/23/2 155/24/2 141/25/2
+f 143/26/2 138/14/2 144/27/2 155/28/2
+f 139/20/1 156/21/1 142/22/1 131/8/1
+f 132/9/1 140/23/1 156/24/1 139/25/1
+f 140/26/1 134/14/1 141/27/1 156/28/1
+f 182/17/1 167/18/1 159/3/1 168/19/1
+f 181/17/2 170/18/2 163/3/2 171/19/2
+f 180/17/3 173/18/3 161/3/3 174/19/3
+f 179/17/4 165/18/4 157/3/4 176/19/4
+f 178/17/5 171/18/5 163/3/5 174/19/5
+f 177/17/6 169/18/6 160/3/6 166/19/6
+f 175/20/6 177/21/6 166/22/6 158/8/6
+f 162/9/6 172/23/6 177/24/6 175/25/6
+f 172/26/6 164/14/6 169/27/6 177/28/6
+f 176/20/5 178/21/5 174/22/5 161/8/5
+f 157/9/5 168/23/5 178/24/5 176/25/5
+f 168/26/5 159/14/5 171/27/5 178/28/5
+f 173/20/4 179/21/4 176/22/4 161/8/4
+f 162/9/4 175/23/4 179/24/4 173/25/4
+f 175/26/4 158/14/4 165/27/4 179/28/4
+f 170/20/3 180/21/3 174/22/3 163/8/3
+f 164/9/3 172/23/3 180/24/3 170/25/3
+f 172/26/3 162/14/3 173/27/3 180/28/3
+f 167/20/2 181/21/2 171/22/2 159/8/2
+f 160/9/2 169/23/2 181/24/2 167/25/2
+f 169/26/2 164/14/2 170/27/2 181/28/2
+f 165/20/1 182/21/1 168/22/1 157/8/1
+f 158/9/1 166/23/1 182/24/1 165/25/1
+f 166/26/1 160/14/1 167/27/1 182/28/1
+f 208/17/1 193/18/1 185/3/1 194/19/1
+f 207/17/2 196/18/2 189/3/2 197/19/2
+f 206/17/3 199/18/3 187/3/3 200/19/3
+f 205/17/4 191/18/4 183/3/4 202/19/4
+f 204/17/5 197/18/5 189/3/5 200/19/5
+f 203/17/6 195/18/6 186/3/6 192/19/6
+f 201/20/6 203/21/6 192/22/6 184/8/6
+f 188/9/6 198/23/6 203/24/6 201/25/6
+f 198/26/6 190/14/6 195/27/6 203/28/6
+f 202/20/5 204/21/5 200/22/5 187/8/5
+f 183/9/5 194/23/5 204/24/5 202/25/5
+f 194/26/5 185/14/5 197/27/5 204/28/5
+f 199/20/4 205/21/4 202/22/4 187/8/4
+f 188/9/4 201/23/4 205/24/4 199/25/4
+f 201/26/4 184/14/4 191/27/4 205/28/4
+f 196/20/3 206/21/3 200/22/3 189/8/3
+f 190/9/3 198/23/3 206/24/3 196/25/3
+f 198/26/3 188/14/3 199/27/3 206/28/3
+f 193/20/2 207/21/2 197/22/2 185/8/2
+f 186/9/2 195/23/2 207/24/2 193/25/2
+f 195/26/2 190/14/2 196/27/2 207/28/2
+f 191/20/1 208/21/1 194/22/1 183/8/1
+f 184/9/1 192/23/1 208/24/1 191/25/1
+f 192/26/1 186/14/1 193/27/1 208/28/1
+f 234/17/1 219/18/1 211/3/1 220/19/1
+f 233/17/2 222/18/2 215/3/2 223/19/2
+f 232/17/3 225/18/3 213/3/3 226/19/3
+f 231/17/4 217/18/4 209/3/4 228/19/4
+f 230/17/5 223/18/5 215/3/5 226/19/5
+f 229/17/6 221/18/6 212/3/6 218/19/6
+f 227/20/6 229/21/6 218/22/6 210/8/6
+f 214/9/6 224/23/6 229/24/6 227/25/6
+f 224/26/6 216/14/6 221/27/6 229/28/6
+f 228/20/5 230/21/5 226/22/5 213/8/5
+f 209/9/5 220/23/5 230/24/5 228/25/5
+f 220/26/5 211/14/5 223/27/5 230/28/5
+f 225/20/4 231/21/4 228/22/4 213/8/4
+f 214/9/4 227/23/4 231/24/4 225/25/4
+f 227/26/4 210/14/4 217/27/4 231/28/4
+f 222/20/3 232/21/3 226/22/3 215/8/3
+f 216/9/3 224/23/3 232/24/3 222/25/3
+f 224/26/3 214/14/3 225/27/3 232/28/3
+f 219/20/2 233/21/2 223/22/2 211/8/2
+f 212/9/2 221/23/2 233/24/2 219/25/2
+f 221/26/2 216/14/2 222/27/2 233/28/2
+f 217/20/1 234/21/1 220/22/1 209/8/1
+f 210/9/1 218/23/1 234/24/1 217/25/1
+f 218/26/1 212/14/1 219/27/1 234/28/1
+f 260/17/1 245/18/1 237/3/1 246/19/1
+f 259/17/2 248/18/2 241/3/2 249/19/2
+f 258/17/3 251/18/3 239/3/3 252/19/3
+f 257/17/4 243/18/4 235/3/4 254/19/4
+f 256/17/5 249/18/5 241/3/5 252/19/5
+f 255/17/6 247/18/6 238/3/6 244/19/6
+f 253/20/6 255/21/6 244/22/6 236/8/6
+f 240/9/6 250/23/6 255/24/6 253/25/6
+f 250/26/6 242/14/6 247/27/6 255/28/6
+f 254/20/5 256/21/5 252/22/5 239/8/5
+f 235/9/5 246/23/5 256/24/5 254/25/5
+f 246/26/5 237/14/5 249/27/5 256/28/5
+f 251/20/4 257/21/4 254/22/4 239/8/4
+f 240/9/4 253/23/4 257/24/4 251/25/4
+f 253/26/4 236/14/4 243/27/4 257/28/4
+f 248/20/3 258/21/3 252/22/3 241/8/3
+f 242/9/3 250/23/3 258/24/3 248/25/3
+f 250/26/3 240/14/3 251/27/3 258/28/3
+f 245/20/2 259/21/2 249/22/2 237/8/2
+f 238/9/2 247/23/2 259/24/2 245/25/2
+f 247/26/2 242/14/2 248/27/2 259/28/2
+f 243/20/1 260/21/1 246/22/1 235/8/1
+f 236/9/1 244/23/1 260/24/1 243/25/1
+f 244/26/1 238/14/1 245/27/1 260/28/1
+f 312/17/1 297/18/1 289/3/1 298/19/1
+f 311/17/2 300/18/2 293/3/2 301/19/2
+f 310/17/3 303/18/3 291/3/3 304/19/3
+f 309/17/4 295/18/4 287/3/4 306/19/4
+f 308/17/5 301/18/5 293/3/5 304/19/5
+f 307/17/6 299/18/6 290/3/6 296/19/6
+f 305/20/6 307/21/6 296/22/6 288/8/6
+f 292/9/6 302/23/6 307/24/6 305/25/6
+f 302/26/6 294/14/6 299/27/6 307/28/6
+f 306/20/5 308/21/5 304/22/5 291/8/5
+f 287/9/5 298/23/5 308/24/5 306/25/5
+f 298/26/5 289/14/5 301/27/5 308/28/5
+f 303/20/4 309/21/4 306/22/4 291/8/4
+f 292/9/4 305/23/4 309/24/4 303/25/4
+f 305/26/4 288/14/4 295/27/4 309/28/4
+f 300/20/3 310/21/3 304/22/3 293/8/3
+f 294/9/3 302/23/3 310/24/3 300/25/3
+f 302/26/3 292/14/3 303/27/3 310/28/3
+f 297/20/2 311/21/2 301/22/2 289/8/2
+f 290/9/2 299/23/2 311/24/2 297/25/2
+f 299/26/2 294/14/2 300/27/2 311/28/2
+f 295/20/1 312/21/1 298/22/1 287/8/1
+f 288/9/1 296/23/1 312/24/1 295/25/1
+f 296/26/1 290/14/1 297/27/1 312/28/1
+f 338/17/1 323/18/1 315/3/1 324/19/1
+f 337/17/2 326/18/2 319/3/2 327/19/2
+f 336/17/3 329/18/3 317/3/3 330/19/3
+f 335/17/4 321/18/4 313/3/4 332/19/4
+f 334/17/5 327/18/5 319/3/5 330/19/5
+f 333/17/6 325/18/6 316/3/6 322/19/6
+f 331/20/6 333/21/6 322/22/6 314/8/6
+f 318/9/6 328/23/6 333/24/6 331/25/6
+f 328/26/6 320/14/6 325/27/6 333/28/6
+f 332/20/5 334/21/5 330/22/5 317/8/5
+f 313/9/5 324/23/5 334/24/5 332/25/5
+f 324/26/5 315/14/5 327/27/5 334/28/5
+f 329/20/4 335/21/4 332/22/4 317/8/4
+f 318/9/4 331/23/4 335/24/4 329/25/4
+f 331/26/4 314/14/4 321/27/4 335/28/4
+f 326/20/3 336/21/3 330/22/3 319/8/3
+f 320/9/3 328/23/3 336/24/3 326/25/3
+f 328/26/3 318/14/3 329/27/3 336/28/3
+f 323/20/2 337/21/2 327/22/2 315/8/2
+f 316/9/2 325/23/2 337/24/2 323/25/2
+f 325/26/2 320/14/2 326/27/2 337/28/2
+f 321/20/1 338/21/1 324/22/1 313/8/1
+f 314/9/1 322/23/1 338/24/1 321/25/1
+f 322/26/1 316/14/1 323/27/1 338/28/1
+f 364/17/1 349/18/1 341/3/1 350/19/1
+f 363/17/2 352/18/2 345/3/2 353/19/2
+f 362/17/3 355/18/3 343/3/3 356/19/3
+f 361/17/4 347/18/4 339/3/4 358/19/4
+f 360/17/5 353/18/5 345/3/5 356/19/5
+f 359/17/6 351/18/6 342/3/6 348/19/6
+f 357/20/6 359/21/6 348/22/6 340/8/6
+f 344/9/6 354/23/6 359/24/6 357/25/6
+f 354/26/6 346/14/6 351/27/6 359/28/6
+f 358/20/5 360/21/5 356/22/5 343/8/5
+f 339/9/5 350/23/5 360/24/5 358/25/5
+f 350/26/5 341/14/5 353/27/5 360/28/5
+f 355/20/4 361/21/4 358/22/4 343/8/4
+f 344/9/4 357/23/4 361/24/4 355/25/4
+f 357/26/4 340/14/4 347/27/4 361/28/4
+f 352/20/3 362/21/3 356/22/3 345/8/3
+f 346/9/3 354/23/3 362/24/3 352/25/3
+f 354/26/3 344/14/3 355/27/3 362/28/3
+f 349/20/2 363/21/2 353/22/2 341/8/2
+f 342/9/2 351/23/2 363/24/2 349/25/2
+f 351/26/2 346/14/2 352/27/2 363/28/2
+f 347/20/1 364/21/1 350/22/1 339/8/1
+f 340/9/1 348/23/1 364/24/1 347/25/1
+f 348/26/1 342/14/1 349/27/1 364/28/1
+f 390/17/1 375/18/1 367/3/1 376/19/1
+f 389/17/2 378/18/2 371/3/2 379/19/2
+f 388/17/3 381/18/3 369/3/3 382/19/3
+f 387/17/4 373/18/4 365/3/4 384/19/4
+f 386/17/5 379/18/5 371/3/5 382/19/5
+f 385/17/6 377/18/6 368/3/6 374/19/6
+f 383/20/6 385/21/6 374/22/6 366/8/6
+f 370/9/6 380/23/6 385/24/6 383/25/6
+f 380/26/6 372/14/6 377/27/6 385/28/6
+f 384/20/5 386/21/5 382/22/5 369/8/5
+f 365/9/5 376/23/5 386/24/5 384/25/5
+f 376/26/5 367/14/5 379/27/5 386/28/5
+f 381/20/4 387/21/4 384/22/4 369/8/4
+f 370/9/4 383/23/4 387/24/4 381/25/4
+f 383/26/4 366/14/4 373/27/4 387/28/4
+f 378/20/3 388/21/3 382/22/3 371/8/3
+f 372/9/3 380/23/3 388/24/3 378/25/3
+f 380/26/3 370/14/3 381/27/3 388/28/3
+f 375/20/2 389/21/2 379/22/2 367/8/2
+f 368/9/2 377/23/2 389/24/2 375/25/2
+f 377/26/2 372/14/2 378/27/2 389/28/2
+f 373/20/1 390/21/1 376/22/1 365/8/1
+f 366/9/1 374/23/1 390/24/1 373/25/1
+f 374/26/1 368/14/1 375/27/1 390/28/1
+f 416/17/1 401/18/1 393/3/1 402/19/1
+f 415/17/2 404/18/2 397/3/2 405/19/2
+f 414/17/3 407/18/3 395/3/3 408/19/3
+f 413/17/4 399/18/4 391/3/4 410/19/4
+f 412/17/5 405/18/5 397/3/5 408/19/5
+f 411/17/6 403/18/6 394/3/6 400/19/6
+f 409/20/6 411/21/6 400/22/6 392/8/6
+f 396/9/6 406/23/6 411/24/6 409/25/6
+f 406/26/6 398/14/6 403/27/6 411/28/6
+f 410/20/5 412/21/5 408/22/5 395/8/5
+f 391/9/5 402/23/5 412/24/5 410/25/5
+f 402/26/5 393/14/5 405/27/5 412/28/5
+f 407/20/4 413/21/4 410/22/4 395/8/4
+f 396/9/4 409/23/4 413/24/4 407/25/4
+f 409/26/4 392/14/4 399/27/4 413/28/4
+f 404/20/3 414/21/3 408/22/3 397/8/3
+f 398/9/3 406/23/3 414/24/3 404/25/3
+f 406/26/3 396/14/3 407/27/3 414/28/3
+f 401/20/2 415/21/2 405/22/2 393/8/2
+f 394/9/2 403/23/2 415/24/2 401/25/2
+f 403/26/2 398/14/2 404/27/2 415/28/2
+f 399/20/1 416/21/1 402/22/1 391/8/1
+f 392/9/1 400/23/1 416/24/1 399/25/1
+f 400/26/1 394/14/1 401/27/1 416/28/1
+f 442/17/1 427/18/1 419/3/1 428/19/1
+f 441/17/2 430/18/2 423/3/2 431/19/2
+f 440/17/3 433/18/3 421/3/3 434/19/3
+f 439/17/4 425/18/4 417/3/4 436/19/4
+f 438/17/5 431/18/5 423/3/5 434/19/5
+f 437/17/6 429/18/6 420/3/6 426/19/6
+f 435/20/6 437/21/6 426/22/6 418/8/6
+f 422/9/6 432/23/6 437/24/6 435/25/6
+f 432/26/6 424/14/6 429/27/6 437/28/6
+f 436/20/5 438/21/5 434/22/5 421/8/5
+f 417/9/5 428/23/5 438/24/5 436/25/5
+f 428/26/5 419/14/5 431/27/5 438/28/5
+f 433/20/4 439/21/4 436/22/4 421/8/4
+f 422/9/4 435/23/4 439/24/4 433/25/4
+f 435/26/4 418/14/4 425/27/4 439/28/4
+f 430/20/3 440/21/3 434/22/3 423/8/3
+f 424/9/3 432/23/3 440/24/3 430/25/3
+f 432/26/3 422/14/3 433/27/3 440/28/3
+f 427/20/2 441/21/2 431/22/2 419/8/2
+f 420/9/2 429/23/2 441/24/2 427/25/2
+f 429/26/2 424/14/2 430/27/2 441/28/2
+f 425/20/1 442/21/1 428/22/1 417/8/1
+f 418/9/1 426/23/1 442/24/1 425/25/1
+f 426/26/1 420/14/1 427/27/1 442/28/1
+f 468/17/1 453/18/1 445/3/1 454/19/1
+f 467/17/2 456/18/2 449/3/2 457/19/2
+f 466/17/3 459/18/3 447/3/3 460/19/3
+f 465/17/4 451/18/4 443/3/4 462/19/4
+f 464/17/5 457/18/5 449/3/5 460/19/5
+f 463/17/6 455/18/6 446/3/6 452/19/6
+f 461/20/6 463/21/6 452/22/6 444/8/6
+f 448/9/6 458/23/6 463/24/6 461/25/6
+f 458/26/6 450/14/6 455/27/6 463/28/6
+f 462/20/5 464/21/5 460/22/5 447/8/5
+f 443/9/5 454/23/5 464/24/5 462/25/5
+f 454/26/5 445/14/5 457/27/5 464/28/5
+f 459/20/4 465/21/4 462/22/4 447/8/4
+f 448/9/4 461/23/4 465/24/4 459/25/4
+f 461/26/4 444/14/4 451/27/4 465/28/4
+f 456/20/3 466/21/3 460/22/3 449/8/3
+f 450/9/3 458/23/3 466/24/3 456/25/3
+f 458/26/3 448/14/3 459/27/3 466/28/3
+f 453/20/2 467/21/2 457/22/2 445/8/2
+f 446/9/2 455/23/2 467/24/2 453/25/2
+f 455/26/2 450/14/2 456/27/2 467/28/2
+f 451/20/1 468/21/1 454/22/1 443/8/1
+f 444/9/1 452/23/1 468/24/1 451/25/1
+f 452/26/1 446/14/1 453/27/1 468/28/1
+f 494/17/1 479/18/1 471/3/1 480/19/1
+f 493/17/2 482/18/2 475/3/2 483/19/2
+f 492/17/3 485/18/3 473/3/3 486/19/3
+f 491/17/4 477/18/4 469/3/4 488/19/4
+f 490/17/5 483/18/5 475/3/5 486/19/5
+f 489/17/6 481/18/6 472/3/6 478/19/6
+f 487/20/6 489/21/6 478/22/6 470/8/6
+f 474/9/6 484/23/6 489/24/6 487/25/6
+f 484/26/6 476/14/6 481/27/6 489/28/6
+f 488/20/5 490/21/5 486/22/5 473/8/5
+f 469/9/5 480/23/5 490/24/5 488/25/5
+f 480/26/5 471/14/5 483/27/5 490/28/5
+f 485/20/4 491/21/4 488/22/4 473/8/4
+f 474/9/4 487/23/4 491/24/4 485/25/4
+f 487/26/4 470/14/4 477/27/4 491/28/4
+f 482/20/3 492/21/3 486/22/3 475/8/3
+f 476/9/3 484/23/3 492/24/3 482/25/3
+f 484/26/3 474/14/3 485/27/3 492/28/3
+f 479/20/2 493/21/2 483/22/2 471/8/2
+f 472/9/2 481/23/2 493/24/2 479/25/2
+f 481/26/2 476/14/2 482/27/2 493/28/2
+f 477/20/1 494/21/1 480/22/1 469/8/1
+f 470/9/1 478/23/1 494/24/1 477/25/1
+f 478/26/1 472/14/1 479/27/1 494/28/1
+f 520/17/1 505/18/1 497/3/1 506/19/1
+f 519/17/2 508/18/2 501/3/2 509/19/2
+f 518/17/3 511/18/3 499/3/3 512/19/3
+f 517/17/4 503/18/4 495/3/4 514/19/4
+f 516/17/5 509/18/5 501/3/5 512/19/5
+f 515/17/6 507/18/6 498/3/6 504/19/6
+f 513/20/6 515/21/6 504/22/6 496/8/6
+f 500/9/6 510/23/6 515/24/6 513/25/6
+f 510/26/6 502/14/6 507/27/6 515/28/6
+f 514/20/5 516/21/5 512/22/5 499/8/5
+f 495/9/5 506/23/5 516/24/5 514/25/5
+f 506/26/5 497/14/5 509/27/5 516/28/5
+f 511/20/4 517/21/4 514/22/4 499/8/4
+f 500/9/4 513/23/4 517/24/4 511/25/4
+f 513/26/4 496/14/4 503/27/4 517/28/4
+f 508/20/3 518/21/3 512/22/3 501/8/3
+f 502/9/3 510/23/3 518/24/3 508/25/3
+f 510/26/3 500/14/3 511/27/3 518/28/3
+f 505/20/2 519/21/2 509/22/2 497/8/2
+f 498/9/2 507/23/2 519/24/2 505/25/2
+f 507/26/2 502/14/2 508/27/2 519/28/2
+f 503/20/1 520/21/1 506/22/1 495/8/1
+f 496/9/1 504/23/1 520/24/1 503/25/1
+f 504/26/1 498/14/1 505/27/1 520/28/1
+f 546/17/1 531/18/1 523/3/1 532/19/1
+f 545/17/2 534/18/2 527/3/2 535/19/2
+f 544/17/3 537/18/3 525/3/3 538/19/3
+f 543/17/4 529/18/4 521/3/4 540/19/4
+f 542/17/5 535/18/5 527/3/5 538/19/5
+f 541/17/6 533/18/6 524/3/6 530/19/6
+f 539/20/6 541/21/6 530/22/6 522/8/6
+f 526/9/6 536/23/6 541/24/6 539/25/6
+f 536/26/6 528/14/6 533/27/6 541/28/6
+f 540/20/5 542/21/5 538/22/5 525/8/5
+f 521/9/5 532/23/5 542/24/5 540/25/5
+f 532/26/5 523/14/5 535/27/5 542/28/5
+f 537/20/4 543/21/4 540/22/4 525/8/4
+f 526/9/4 539/23/4 543/24/4 537/25/4
+f 539/26/4 522/14/4 529/27/4 543/28/4
+f 534/20/3 544/21/3 538/22/3 527/8/3
+f 528/9/3 536/23/3 544/24/3 534/25/3
+f 536/26/3 526/14/3 537/27/3 544/28/3
+f 531/20/2 545/21/2 535/22/2 523/8/2
+f 524/9/2 533/23/2 545/24/2 531/25/2
+f 533/26/2 528/14/2 534/27/2 545/28/2
+f 529/20/1 546/21/1 532/22/1 521/8/1
+f 522/9/1 530/23/1 546/24/1 529/25/1
+f 530/26/1 524/14/1 531/27/1 546/28/1
+f 572/17/1 557/18/1 549/3/1 558/19/1
+f 571/17/2 560/18/2 553/3/2 561/19/2
+f 570/17/3 563/18/3 551/3/3 564/19/3
+f 569/17/4 555/18/4 547/3/4 566/19/4
+f 568/17/5 561/18/5 553/3/5 564/19/5
+f 567/17/6 559/18/6 550/3/6 556/19/6
+f 565/20/6 567/21/6 556/22/6 548/8/6
+f 552/9/6 562/23/6 567/24/6 565/25/6
+f 562/26/6 554/14/6 559/27/6 567/28/6
+f 566/20/5 568/21/5 564/22/5 551/8/5
+f 547/9/5 558/23/5 568/24/5 566/25/5
+f 558/26/5 549/14/5 561/27/5 568/28/5
+f 563/20/4 569/21/4 566/22/4 551/8/4
+f 552/9/4 565/23/4 569/24/4 563/25/4
+f 565/26/4 548/14/4 555/27/4 569/28/4
+f 560/20/3 570/21/3 564/22/3 553/8/3
+f 554/9/3 562/23/3 570/24/3 560/25/3
+f 562/26/3 552/14/3 563/27/3 570/28/3
+f 557/20/2 571/21/2 561/22/2 549/8/2
+f 550/9/2 559/23/2 571/24/2 557/25/2
+f 559/26/2 554/14/2 560/27/2 571/28/2
+f 555/20/1 572/21/1 558/22/1 547/8/1
+f 548/9/1 556/23/1 572/24/1 555/25/1
+f 556/26/1 550/14/1 557/27/1 572/28/1
+f 598/17/1 583/18/1 575/3/1 584/19/1
+f 597/17/2 586/18/2 579/3/2 587/19/2
+f 596/17/3 589/18/3 577/3/3 590/19/3
+f 595/17/4 581/18/4 573/3/4 592/19/4
+f 594/17/5 587/18/5 579/3/5 590/19/5
+f 593/17/6 585/18/6 576/3/6 582/19/6
+f 591/20/6 593/21/6 582/22/6 574/8/6
+f 578/9/6 588/23/6 593/24/6 591/25/6
+f 588/26/6 580/14/6 585/27/6 593/28/6
+f 592/20/5 594/21/5 590/22/5 577/8/5
+f 573/9/5 584/23/5 594/24/5 592/25/5
+f 584/26/5 575/14/5 587/27/5 594/28/5
+f 589/20/4 595/21/4 592/22/4 577/8/4
+f 578/9/4 591/23/4 595/24/4 589/25/4
+f 591/26/4 574/14/4 581/27/4 595/28/4
+f 586/20/3 596/21/3 590/22/3 579/8/3
+f 580/9/3 588/23/3 596/24/3 586/25/3
+f 588/26/3 578/14/3 589/27/3 596/28/3
+f 583/20/2 597/21/2 587/22/2 575/8/2
+f 576/9/2 585/23/2 597/24/2 583/25/2
+f 585/26/2 580/14/2 586/27/2 597/28/2
+f 581/20/1 598/21/1 584/22/1 573/8/1
+f 574/9/1 582/23/1 598/24/1 581/25/1
+f 582/26/1 576/14/1 583/27/1 598/28/1
+f 624/17/1 609/18/1 601/3/1 610/19/1
+f 623/17/2 612/18/2 605/3/2 613/19/2
+f 622/17/3 615/18/3 603/3/3 616/19/3
+f 621/17/4 607/18/4 599/3/4 618/19/4
+f 620/17/5 613/18/5 605/3/5 616/19/5
+f 619/17/6 611/18/6 602/3/6 608/19/6
+f 617/20/6 619/21/6 608/22/6 600/8/6
+f 604/9/6 614/23/6 619/24/6 617/25/6
+f 614/26/6 606/14/6 611/27/6 619/28/6
+f 618/20/5 620/21/5 616/22/5 603/8/5
+f 599/9/5 610/23/5 620/24/5 618/25/5
+f 610/26/5 601/14/5 613/27/5 620/28/5
+f 615/20/4 621/21/4 618/22/4 603/8/4
+f 604/9/4 617/23/4 621/24/4 615/25/4
+f 617/26/4 600/14/4 607/27/4 621/28/4
+f 612/20/3 622/21/3 616/22/3 605/8/3
+f 606/9/3 614/23/3 622/24/3 612/25/3
+f 614/26/3 604/14/3 615/27/3 622/28/3
+f 609/20/2 623/21/2 613/22/2 601/8/2
+f 602/9/2 611/23/2 623/24/2 609/25/2
+f 611/26/2 606/14/2 612/27/2 623/28/2
+f 607/20/1 624/21/1 610/22/1 599/8/1
+f 600/9/1 608/23/1 624/24/1 607/25/1
+f 608/26/1 602/14/1 609/27/1 624/28/1
+f 650/17/1 635/18/1 627/3/1 636/19/1
+f 649/17/2 638/18/2 631/3/2 639/19/2
+f 648/17/3 641/18/3 629/3/3 642/19/3
+f 647/17/4 633/18/4 625/3/4 644/19/4
+f 646/17/5 639/18/5 631/3/5 642/19/5
+f 645/17/6 637/18/6 628/3/6 634/19/6
+f 643/20/6 645/21/6 634/22/6 626/8/6
+f 630/9/6 640/23/6 645/24/6 643/25/6
+f 640/26/6 632/14/6 637/27/6 645/28/6
+f 644/20/5 646/21/5 642/22/5 629/8/5
+f 625/9/5 636/23/5 646/24/5 644/25/5
+f 636/26/5 627/14/5 639/27/5 646/28/5
+f 641/20/4 647/21/4 644/22/4 629/8/4
+f 630/9/4 643/23/4 647/24/4 641/25/4
+f 643/26/4 626/14/4 633/27/4 647/28/4
+f 638/20/3 648/21/3 642/22/3 631/8/3
+f 632/9/3 640/23/3 648/24/3 638/25/3
+f 640/26/3 630/14/3 641/27/3 648/28/3
+f 635/20/2 649/21/2 639/22/2 627/8/2
+f 628/9/2 637/23/2 649/24/2 635/25/2
+f 637/26/2 632/14/2 638/27/2 649/28/2
+f 633/20/1 650/21/1 636/22/1 625/8/1
+f 626/9/1 634/23/1 650/24/1 633/25/1
+f 634/26/1 628/14/1 635/27/1 650/28/1
+f 676/17/1 661/18/1 653/3/1 662/19/1
+f 675/17/2 664/18/2 657/3/2 665/19/2
+f 674/17/3 667/18/3 655/3/3 668/19/3
+f 673/17/4 659/18/4 651/3/4 670/19/4
+f 672/17/5 665/18/5 657/3/5 668/19/5
+f 671/17/6 663/18/6 654/3/6 660/19/6
+f 669/20/6 671/21/6 660/22/6 652/8/6
+f 656/9/6 666/23/6 671/24/6 669/25/6
+f 666/26/6 658/14/6 663/27/6 671/28/6
+f 670/20/5 672/21/5 668/22/5 655/8/5
+f 651/9/5 662/23/5 672/24/5 670/25/5
+f 662/26/5 653/14/5 665/27/5 672/28/5
+f 667/20/4 673/21/4 670/22/4 655/8/4
+f 656/9/4 669/23/4 673/24/4 667/25/4
+f 669/26/4 652/14/4 659/27/4 673/28/4
+f 664/20/3 674/21/3 668/22/3 657/8/3
+f 658/9/3 666/23/3 674/24/3 664/25/3
+f 666/26/3 656/14/3 667/27/3 674/28/3
+f 661/20/2 675/21/2 665/22/2 653/8/2
+f 654/9/2 663/23/2 675/24/2 661/25/2
+f 663/26/2 658/14/2 664/27/2 675/28/2
+f 659/20/1 676/21/1 662/22/1 651/8/1
+f 652/9/1 660/23/1 676/24/1 659/25/1
+f 660/26/1 654/14/1 661/27/1 676/28/1
+g Cube_Meshnode_Material_4
+usemtl Material_4
+f 286/17/1 271/18/1 263/3/1 272/19/1
+f 285/17/2 274/18/2 267/3/2 275/19/2
+f 284/17/3 277/18/3 265/3/3 278/19/3
+f 283/17/4 269/18/4 261/3/4 280/19/4
+f 282/17/5 275/18/5 267/3/5 278/19/5
+f 281/17/6 273/18/6 264/3/6 270/19/6
+f 279/20/6 281/21/6 270/22/6 262/8/6
+f 266/9/6 276/23/6 281/24/6 279/25/6
+f 276/26/6 268/14/6 273/27/6 281/28/6
+f 280/20/5 282/21/5 278/22/5 265/8/5
+f 261/9/5 272/23/5 282/24/5 280/25/5
+f 272/26/5 263/14/5 275/27/5 282/28/5
+f 277/20/4 283/21/4 280/22/4 265/8/4
+f 266/9/4 279/23/4 283/24/4 277/25/4
+f 279/26/4 262/14/4 269/27/4 283/28/4
+f 274/20/3 284/21/3 278/22/3 267/8/3
+f 268/9/3 276/23/3 284/24/3 274/25/3
+f 276/26/3 266/14/3 277/27/3 284/28/3
+f 271/20/2 285/21/2 275/22/2 263/8/2
+f 264/9/2 273/23/2 285/24/2 271/25/2
+f 273/26/2 268/14/2 274/27/2 285/28/2
+f 269/20/1 286/21/1 272/22/1 261/8/1
+f 262/9/1 270/23/1 286/24/1 269/25/1
+f 270/26/1 264/14/1 271/27/1 286/28/1
+g Cube_Meshnode_Material_5
+usemtl Material_5
+f 104/17/1 89/18/1 81/3/1 90/19/1
+f 103/17/2 92/18/2 85/3/2 93/19/2
+f 102/17/3 95/18/3 83/3/3 96/19/3
+f 101/17/4 87/18/4 79/3/4 98/19/4
+f 100/17/5 93/18/5 85/3/5 96/19/5
+f 99/17/6 91/18/6 82/3/6 88/19/6
+f 97/20/6 99/21/6 88/22/6 80/8/6
+f 84/9/6 94/23/6 99/24/6 97/25/6
+f 94/26/6 86/14/6 91/27/6 99/28/6
+f 98/20/5 100/21/5 96/22/5 83/8/5
+f 79/9/5 90/23/5 100/24/5 98/25/5
+f 90/26/5 81/14/5 93/27/5 100/28/5
+f 95/20/4 101/21/4 98/22/4 83/8/4
+f 84/9/4 97/23/4 101/24/4 95/25/4
+f 97/26/4 80/14/4 87/27/4 101/28/4
+f 92/20/3 102/21/3 96/22/3 85/8/3
+f 86/9/3 94/23/3 102/24/3 92/25/3
+f 94/26/3 84/14/3 95/27/3 102/28/3
+f 89/20/2 103/21/2 93/22/2 81/8/2
+f 82/9/2 91/23/2 103/24/2 89/25/2
+f 91/26/2 86/14/2 92/27/2 103/28/2
+f 87/20/1 104/21/1 90/22/1 79/8/1
+f 80/9/1 88/23/1 104/24/1 87/25/1
+f 88/26/1 82/14/1 89/27/1 104/28/1
diff --git a/models/meshnode_fence.obj b/models/meshnode_fence.obj
new file mode 100644
index 0000000..58143bc
--- /dev/null
+++ b/models/meshnode_fence.obj
@@ -0,0 +1,166 @@
+# Blender v2.76 (sub 0) OBJ File: 'meshnode_fence.blend'
+# www.blender.org
+mtllib meshnode_fence.mtl
+v 0.625000 1.875000 -5.000000
+v 0.625000 1.875000 -1.250000
+v -0.625000 1.875000 -1.250000
+v -0.625000 1.875000 -5.000000
+v 0.625000 3.125000 -5.000000
+v 0.625000 3.125000 -1.250000
+v -0.625000 3.125000 -1.250000
+v -0.625000 3.125000 -5.000000
+v -0.625000 -1.875000 -5.000000
+v -0.625000 -1.875000 -1.250000
+v 0.625000 -1.875000 -1.250000
+v 0.625000 -1.875000 -5.000000
+v -0.625000 -3.125000 -5.000000
+v -0.625000 -3.125000 -1.250000
+v 0.625000 -3.125000 -1.250000
+v 0.625000 -3.125000 -5.000000
+v -5.000000 1.875000 -0.624998
+v -1.250000 1.875000 -0.625000
+v -1.250000 1.875000 0.625000
+v -5.000000 1.875000 0.625002
+v -5.000000 3.125000 -0.624998
+v -1.250000 3.125000 -0.625000
+v -1.250000 3.125000 0.625000
+v -5.000000 3.125000 0.625002
+v -5.000000 -1.875000 0.625002
+v -1.250000 -1.875000 0.625000
+v -1.250000 -1.875000 -0.625000
+v -5.000000 -1.875000 -0.624998
+v -5.000000 -3.125000 0.625002
+v -1.250000 -3.125000 0.625000
+v -1.250000 -3.125000 -0.625000
+v -5.000000 -3.125000 -0.624998
+v 1.250004 1.875000 -0.624998
+v 5.000004 1.875000 -0.625000
+v 5.000005 1.875000 0.625000
+v 1.250005 1.875000 0.625002
+v 1.250005 3.125000 -0.624998
+v 5.000005 3.125000 -0.625000
+v 5.000005 3.125000 0.625000
+v 1.250005 3.125000 0.625002
+v 1.250005 -1.875000 0.625002
+v 5.000005 -1.875000 0.625000
+v 5.000005 -1.875000 -0.625000
+v 1.250005 -1.875000 -0.624998
+v 1.250005 -3.125000 0.625002
+v 5.000005 -3.125000 0.625000
+v 5.000004 -3.125000 -0.625000
+v 1.250004 -3.125000 -0.624998
+v 0.625000 1.875000 1.250006
+v 0.625000 1.875000 5.000006
+v -0.625000 1.875000 5.000006
+v -0.625000 1.875000 1.250005
+v 0.625000 3.125000 1.250006
+v 0.625000 3.125000 5.000006
+v -0.625000 3.125000 5.000005
+v -0.625000 3.125000 1.250006
+v -0.625000 -1.875000 1.250006
+v -0.625000 -1.875000 5.000005
+v 0.625000 -1.875000 5.000006
+v 0.625000 -1.875000 1.250006
+v -0.625000 -3.125000 1.250005
+v -0.625000 -3.125000 5.000006
+v 0.625000 -3.125000 5.000006
+v 0.625000 -3.125000 1.250006
+v 1.250000 -5.000000 -1.250000
+v 1.250000 -5.000000 1.250000
+v -1.250000 -5.000000 1.250000
+v -1.250000 -5.000000 -1.250000
+v 1.250000 5.000000 -1.250000
+v 1.250000 5.000000 1.250000
+v -1.250000 5.000000 1.250000
+v -1.250000 5.000000 -1.250000
+vt 0.375000 0.625000
+vt 0.375000 0.375000
+vt 0.625000 0.375000
+vt 0.625000 0.625000
+vt 0.625000 0.000000
+vt 0.625000 1.000000
+vt 0.375000 1.000000
+vt 0.375000 0.000000
+vt 1.000000 0.750000
+vt 0.625000 0.750000
+vt 1.000000 0.625000
+vt 1.000000 0.875000
+vt 1.000000 1.000000
+vt 0.625000 0.875000
+vt 0.625000 0.500000
+vt 1.000000 0.500000
+vt 0.625000 0.125000
+vt 1.000000 0.000000
+vt 1.000000 0.125000
+vt 1.000000 0.250000
+vt 1.000000 0.375000
+vt 0.625000 0.250000
+vt 0.375000 0.750000
+vt 0.000000 0.750000
+vt 0.000000 0.625000
+vt 0.375000 0.875000
+vt -0.000000 1.000000
+vt 0.000000 0.875000
+vt -0.000000 0.500000
+vt 0.375000 0.500000
+vt -0.000000 0.125000
+vt 0.000000 -0.000000
+vt 0.375000 0.125000
+vt 0.375000 0.250000
+vt -0.000000 0.375000
+vt -0.000000 0.250000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 1.000000 0.000000 0.000000
+vn -0.000000 -0.000000 1.000000
+vn -1.000000 -0.000000 -0.000000
+vn 0.000000 0.000000 -1.000000
+g Cube_Cube_post
+usemtl post
+s off
+f 65/1/1 66/2/1 67/3/1 68/4/1
+f 69/2/2 72/3/2 71/4/2 70/1/2
+f 65/5/3 69/6/3 70/7/3 66/8/3
+f 66/5/4 70/6/4 71/7/4 67/8/4
+f 67/5/5 71/6/5 72/7/5 68/8/5
+f 69/7/6 65/8/6 68/5/6 72/6/6
+g Cube_Cube_rail_1
+usemtl rail_1
+f 1/9/1 2/10/1 3/4/1 4/11/1
+f 5/12/2 8/13/2 7/6/2 6/14/2
+f 1/9/3 5/12/3 6/14/3 2/10/3
+f 3/4/5 7/15/5 8/16/5 4/11/5
+f 14/17/5 10/5/5 9/18/5 13/19/5
+f 16/20/3 12/21/3 11/3/3 15/22/3
+f 12/21/2 9/16/2 10/15/2 11/3/2
+f 16/20/1 15/22/1 14/17/1 13/19/1
+g Cube_Cube_rail_2
+usemtl rail_2
+f 33/4/1 34/11/1 35/9/1 36/10/1
+f 37/6/2 40/14/2 39/12/2 38/13/2
+f 33/4/6 37/15/6 38/16/6 34/11/6
+f 35/9/4 39/12/4 40/14/4 36/10/4
+f 46/20/4 42/21/4 41/3/4 45/22/4
+f 48/18/6 44/19/6 43/17/6 47/5/6
+f 44/15/2 41/3/2 42/21/2 43/16/2
+f 48/17/1 47/19/1 46/20/1 45/22/1
+g Cube_Cube_rail_3
+usemtl rail_3
+f 49/23/1 50/24/1 51/25/1 52/1/1
+f 53/26/2 56/7/2 55/27/2 54/28/2
+f 49/23/3 53/26/3 54/28/3 50/24/3
+f 51/25/5 55/29/5 56/30/5 52/1/5
+f 62/31/5 58/32/5 57/8/5 61/33/5
+f 64/34/3 60/2/3 59/35/3 63/36/3
+f 60/2/2 57/30/2 58/29/2 59/35/2
+f 64/34/1 63/36/1 62/31/1 61/33/1
+g Cube_Cube_rail_4
+usemtl rail_4
+f 17/25/1 18/1/1 19/23/1 20/24/1
+f 21/27/2 24/28/2 23/26/2 22/7/2
+f 17/25/6 21/29/6 22/30/6 18/1/6
+f 19/23/4 23/26/4 24/28/4 20/24/4
+f 30/34/4 26/2/4 25/35/4 29/36/4
+f 32/31/6 28/32/6 27/8/6 31/33/6
+f 28/29/2 25/35/2 26/2/2 27/30/2
+f 32/31/1 31/33/1 30/34/1 29/36/1
diff --git a/models/meshnode_fence.x b/models/meshnode_fence.x
deleted file mode 100644
index f1cf367..0000000
--- a/models/meshnode_fence.x
+++ /dev/null
@@ -1,633 +0,0 @@
-xof 0303txt 0032
-
-Frame Root {
- FrameTransformMatrix {
- 1.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 1.000000, 0.000000,
- 0.000000, 1.000000,-0.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Frame Cube {
- FrameTransformMatrix {
- 1.250000, 0.000000, 0.000000, 0.000000,
- 0.000000, 1.250000, 0.000000, 0.000000,
- 0.000000, 0.000000, 5.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Mesh { //Cube_007 Mesh
- 152;
- -0.500000; 4.000000; 0.475000;,
- -0.500000; 1.000000; 0.475000;,
- 0.500000; 1.000000; 0.475000;,
- 0.500000; 4.000000; 0.475000;,
- 0.500000; 1.000000; 0.725000;,
- -0.500000; 1.000000; 0.725000;,
- -0.500000; 4.000000; 0.725000;,
- 0.500000; 4.000000; 0.725000;,
- 0.500000; 1.000000; 0.475000;,
- 0.500000; 1.000000; 0.725000;,
- 0.500000; 4.000000; 0.725000;,
- 0.500000; 4.000000; 0.475000;,
- -0.500000; 4.000000; 0.475000;,
- -0.500000; 4.000000; 0.725000;,
- -0.500000; 1.000000; 0.725000;,
- -0.500000; 1.000000; 0.475000;,
- -0.500000; 4.000000;-0.712500;,
- -0.500000; 4.000000;-0.462500;,
- -0.500000; 1.000000;-0.462500;,
- -0.500000; 1.000000;-0.712500;,
- 0.500000; 1.000000;-0.712500;,
- 0.500000; 1.000000;-0.462500;,
- 0.500000; 4.000000;-0.462500;,
- 0.500000; 4.000000;-0.712500;,
- 0.500000; 1.000000;-0.462500;,
- -0.500000; 1.000000;-0.462500;,
- -0.500000; 4.000000;-0.462500;,
- 0.500000; 4.000000;-0.462500;,
- -0.500000; 4.000000;-0.712500;,
- -0.500000; 1.000000;-0.712500;,
- 0.500000; 1.000000;-0.712500;,
- 0.500000; 4.000000;-0.712500;,
- -4.000000;-0.500001; 0.475000;,
- -1.000000;-0.500000; 0.475000;,
- -1.000000; 0.500000; 0.475000;,
- -4.000000; 0.499998; 0.475000;,
- -1.000000; 0.500000; 0.725000;,
- -1.000000;-0.500000; 0.725000;,
- -4.000000;-0.500001; 0.725000;,
- -4.000000; 0.499999; 0.725000;,
- -1.000000; 0.500000; 0.475000;,
- -1.000000; 0.500000; 0.725000;,
- -4.000000; 0.499999; 0.725000;,
- -4.000000; 0.499998; 0.475000;,
- -4.000000;-0.500001; 0.475000;,
- -4.000000;-0.500001; 0.725000;,
- -1.000000;-0.500000; 0.725000;,
- -1.000000;-0.500000; 0.475000;,
- -4.000000;-0.500001;-0.712500;,
- -4.000000;-0.500001;-0.462500;,
- -1.000000;-0.500000;-0.462500;,
- -1.000000;-0.500000;-0.712500;,
- -1.000000; 0.500000;-0.712500;,
- -1.000000; 0.500000;-0.462500;,
- -4.000000; 0.499999;-0.462500;,
- -4.000000; 0.499998;-0.712500;,
- -1.000000; 0.500000;-0.462500;,
- -1.000000;-0.500000;-0.462500;,
- -4.000000;-0.500001;-0.462500;,
- -4.000000; 0.499999;-0.462500;,
- -4.000000;-0.500001;-0.712500;,
- -1.000000;-0.500000;-0.712500;,
- -1.000000; 0.500000;-0.712500;,
- -4.000000; 0.499998;-0.712500;,
- 1.000004;-0.500001; 0.475000;,
- 4.000004;-0.500000; 0.475000;,
- 4.000003; 0.500000; 0.475000;,
- 1.000003; 0.499998; 0.475000;,
- 4.000004; 0.500000; 0.725000;,
- 4.000004;-0.500000; 0.725000;,
- 1.000004;-0.500001; 0.725000;,
- 1.000004; 0.499999; 0.725000;,
- 4.000003; 0.500000; 0.475000;,
- 4.000004; 0.500000; 0.725000;,
- 1.000004; 0.499999; 0.725000;,
- 1.000003; 0.499998; 0.475000;,
- 1.000004;-0.500001; 0.475000;,
- 1.000004;-0.500001; 0.725000;,
- 4.000004;-0.500000; 0.725000;,
- 4.000004;-0.500000; 0.475000;,
- 1.000004;-0.500001;-0.712500;,
- 1.000004;-0.500001;-0.462500;,
- 4.000004;-0.500000;-0.462500;,
- 4.000004;-0.500000;-0.712500;,
- 4.000003; 0.500000;-0.712500;,
- 4.000004; 0.500000;-0.462500;,
- 1.000004; 0.499999;-0.462500;,
- 1.000003; 0.499998;-0.712500;,
- 4.000004; 0.500000;-0.462500;,
- 4.000004;-0.500000;-0.462500;,
- 1.000004;-0.500001;-0.462500;,
- 1.000004; 0.499999;-0.462500;,
- 1.000004;-0.500001;-0.712500;,
- 4.000004;-0.500000;-0.712500;,
- 4.000003; 0.500000;-0.712500;,
- 1.000003; 0.499998;-0.712500;,
- -0.500000;-1.000004; 0.475000;,
- -0.500000;-4.000005; 0.475000;,
- 0.500000;-4.000005; 0.475000;,
- 0.500000;-1.000005; 0.475000;,
- 0.500000;-4.000005; 0.725000;,
- -0.500000;-4.000004; 0.725000;,
- -0.500000;-1.000005; 0.725000;,
- 0.500000;-1.000005; 0.725000;,
- 0.500000;-4.000005; 0.475000;,
- 0.500000;-4.000005; 0.725000;,
- 0.500000;-1.000005; 0.725000;,
- 0.500000;-1.000005; 0.475000;,
- -0.500000;-1.000004; 0.475000;,
- -0.500000;-1.000005; 0.725000;,
- -0.500000;-4.000004; 0.725000;,
- -0.500000;-4.000005; 0.475000;,
- -0.500000;-1.000004;-0.712500;,
- -0.500000;-1.000005;-0.462500;,
- -0.500000;-4.000004;-0.462500;,
- -0.500000;-4.000005;-0.712500;,
- 0.500000;-4.000005;-0.712500;,
- 0.500000;-4.000005;-0.462500;,
- 0.500000;-1.000005;-0.462500;,
- 0.500000;-1.000005;-0.712500;,
- 0.500000;-4.000005;-0.462500;,
- -0.500000;-4.000004;-0.462500;,
- -0.500000;-1.000005;-0.462500;,
- 0.500000;-1.000005;-0.462500;,
- -0.500000;-1.000004;-0.712500;,
- -0.500000;-4.000005;-0.712500;,
- 0.500000;-4.000005;-0.712500;,
- 0.500000;-1.000005;-0.712500;,
- -1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000;-1.000000; 1.000000;,
- -1.000000;-1.000000; 1.000000;,
- -1.000000; 1.000000; 1.000000;,
- 1.000000; 1.000000; 1.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000; 1.000000;,
- 1.000000; 1.000000; 1.000000;,
- 1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000;-1.000000; 1.000000;,
- 1.000000;-1.000000; 1.000000;,
- 1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000;-1.000000;,
- -1.000000; 1.000000; 1.000000;,
- -1.000000;-1.000000; 1.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000; 1.000000;,
- -1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000; 1.000000;;
- 38;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;,
- 4;24;25;26;27;,
- 4;28;29;30;31;,
- 4;32;33;34;35;,
- 4;36;37;38;39;,
- 4;40;41;42;43;,
- 4;44;45;46;47;,
- 4;48;49;50;51;,
- 4;52;53;54;55;,
- 4;56;57;58;59;,
- 4;60;61;62;63;,
- 4;64;65;66;67;,
- 4;68;69;70;71;,
- 4;72;73;74;75;,
- 4;76;77;78;79;,
- 4;80;81;82;83;,
- 4;84;85;86;87;,
- 4;88;89;90;91;,
- 4;92;93;94;95;,
- 4;96;97;98;99;,
- 4;100;101;102;103;,
- 4;104;105;106;107;,
- 4;108;109;110;111;,
- 4;112;113;114;115;,
- 4;116;117;118;119;,
- 4;120;121;122;123;,
- 4;124;125;126;127;,
- 4;128;129;130;131;,
- 4;132;133;134;135;,
- 4;136;137;138;139;,
- 4;140;141;142;143;,
- 4;144;145;146;147;,
- 4;148;149;150;151;;
- MeshNormals { //Cube_007 Normals
- 152;
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- 0.000001;-1.000000;-0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- -0.000001; 1.000000; 0.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000; 1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- -1.000000; 0.000000;-0.000001;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;;
- 38;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;,
- 4;24;25;26;27;,
- 4;28;29;30;31;,
- 4;32;33;34;35;,
- 4;36;37;38;39;,
- 4;40;41;42;43;,
- 4;44;45;46;47;,
- 4;48;49;50;51;,
- 4;52;53;54;55;,
- 4;56;57;58;59;,
- 4;60;61;62;63;,
- 4;64;65;66;67;,
- 4;68;69;70;71;,
- 4;72;73;74;75;,
- 4;76;77;78;79;,
- 4;80;81;82;83;,
- 4;84;85;86;87;,
- 4;88;89;90;91;,
- 4;92;93;94;95;,
- 4;96;97;98;99;,
- 4;100;101;102;103;,
- 4;104;105;106;107;,
- 4;108;109;110;111;,
- 4;112;113;114;115;,
- 4;116;117;118;119;,
- 4;120;121;122;123;,
- 4;124;125;126;127;,
- 4;128;129;130;131;,
- 4;132;133;134;135;,
- 4;136;137;138;139;,
- 4;140;141;142;143;,
- 4;144;145;146;147;,
- 4;148;149;150;151;;
- } //End of Cube_007 Normals
- MeshMaterialList { //Cube_007 Material List
- 5;
- 38;
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 2,
- 2,
- 2,
- 2,
- 2,
- 2,
- 2,
- 2,
- 3,
- 3,
- 3,
- 3,
- 3,
- 3,
- 3,
- 3,
- 4,
- 4,
- 4,
- 4,
- 4,
- 4;;
- Material rail_1 {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.500000; 0.500000; 0.500000;;
- 0.000000; 0.000000; 0.000000;;
- }
- Material rail_4 {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.500000; 0.500000; 0.500000;;
- 0.000000; 0.000000; 0.000000;;
- }
- Material rail_2 {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.500000; 0.500000; 0.500000;;
- 0.000000; 0.000000; 0.000000;;
- }
- Material rail_3 {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.500000; 0.500000; 0.500000;;
- 0.000000; 0.000000; 0.000000;;
- }
- Material post {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.073171; 0.073171; 0.073171;;
- 0.000000; 0.000000; 0.000000;;
- }
- } //End of Cube_007 Material List
- MeshTextureCoords { //Cube_007 UV Coordinates
- 152;
- 0.500000; 0.750000;,
- 1.000000; 0.750000;,
- 1.000000; 0.875000;,
- 0.500000; 0.875000;,
- 0.500000; 0.562500;,
- 0.500000; 0.437500;,
- 1.000000; 0.437500;,
- 1.000000; 0.562500;,
- 0.500000; 0.500000;,
- 0.500000; 0.375000;,
- 1.000000; 0.375000;,
- 1.000000; 0.500000;,
- 0.500000; 0.687500;,
- 0.500000; 0.562500;,
- 1.000000; 0.562500;,
- 1.000000; 0.687500;,
- 0.500000; 0.687500;,
- 0.500000; 0.562500;,
- 1.000000; 0.562500;,
- 1.000000; 0.687500;,
- 0.500000; 0.500000;,
- 0.500000; 0.375000;,
- 1.000000; 0.375000;,
- 1.000000; 0.500000;,
- 0.500000; 0.562500;,
- 0.500000; 0.437500;,
- 1.000000; 0.437500;,
- 1.000000; 0.562500;,
- 0.500000; 0.750000;,
- 1.000000; 0.750000;,
- 1.000000; 0.875000;,
- 0.500000; 0.875000;,
- 0.562500; 0.375000;,
- 0.000000; 0.375000;,
- 0.000000; 0.250000;,
- 0.562500; 0.250000;,
- 0.000000; 0.187500;,
- 0.000000; 0.062500;,
- 0.500000; 0.062500;,
- 0.500000; 0.187500;,
- 0.000000; 1.000000;,
- 0.000000; 0.875000;,
- 0.500000; 0.875000;,
- 0.500000; 1.000000;,
- 0.500000; 0.625000;,
- 0.500000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 0.625000;,
- 0.500000; 0.625000;,
- 0.500000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 0.625000;,
- 0.000000; 1.000000;,
- 0.000000; 0.875000;,
- 0.500000; 0.875000;,
- 0.500000; 1.000000;,
- 0.000000; 0.187500;,
- 0.000000; 0.062500;,
- 0.500000; 0.062500;,
- 0.500000; 0.187500;,
- 0.562500; 0.375000;,
- 0.000000; 0.375000;,
- 0.000000; 0.250000;,
- 0.562500; 0.250000;,
- 1.000000; 0.375000;,
- 0.500000; 0.375000;,
- 0.500000; 0.250000;,
- 1.000000; 0.250000;,
- 0.500000; 0.187500;,
- 0.500000; 0.062500;,
- 1.000000; 0.062500;,
- 1.000000; 0.187500;,
- 0.500000; 1.000000;,
- 0.500000; 0.875000;,
- 1.000000; 0.875000;,
- 1.000000; 1.000000;,
- 0.000000; 0.625000;,
- 0.000000; 0.500000;,
- 0.500000; 0.500000;,
- 0.500000; 0.625000;,
- 0.000000; 0.625000;,
- 0.000000; 0.500000;,
- 0.500000; 0.500000;,
- 0.500000; 0.625000;,
- 0.500000; 1.000000;,
- 0.500000; 0.875000;,
- 1.000000; 0.875000;,
- 1.000000; 1.000000;,
- 0.500000; 0.187500;,
- 0.500000; 0.062500;,
- 1.000000; 0.062500;,
- 1.000000; 0.187500;,
- 1.000000; 0.375000;,
- 0.500000; 0.375000;,
- 0.500000; 0.250000;,
- 1.000000; 0.250000;,
- 0.500000; 0.875000;,
- 0.000000; 0.875000;,
- 0.000000; 0.750000;,
- 0.500000; 0.750000;,
- 0.500000; 0.437500;,
- 0.500000; 0.562500;,
- 0.000000; 0.562500;,
- 0.000000; 0.437500;,
- 0.000000; 0.500000;,
- 0.000000; 0.375000;,
- 0.500000; 0.375000;,
- 0.500000; 0.500000;,
- 0.000000; 0.687500;,
- 0.000000; 0.562500;,
- 0.500000; 0.562500;,
- 0.500000; 0.687500;,
- 0.000000; 0.687500;,
- 0.000000; 0.562500;,
- 0.500000; 0.562500;,
- 0.500000; 0.687500;,
- 0.000000; 0.500000;,
- 0.000000; 0.375000;,
- 0.500000; 0.375000;,
- 0.500000; 0.500000;,
- 0.500000; 0.437500;,
- 0.500000; 0.562500;,
- 0.000000; 0.562500;,
- 0.000000; 0.437500;,
- 0.500000; 0.875000;,
- 0.000000; 0.875000;,
- 0.000000; 0.750000;,
- 0.500000; 0.750000;,
- 0.375000; 0.375000;,
- 0.625000; 0.375000;,
- 0.625000; 0.625000;,
- 0.375000; 0.625000;,
- 0.375000; 0.625000;,
- 0.375000; 0.375000;,
- 0.625000; 0.375000;,
- 0.625000; 0.625000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 0.250000;,
- 0.000000; 0.250000;,
- 0.000000; 0.750000;,
- 1.000000; 0.750000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.250000;,
- 1.000000; 0.250000;,
- 1.000000; 0.500000;,
- 0.000000; 0.500000;,
- 1.000000; 0.750000;,
- 0.000000; 0.750000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;;
- } //End of Cube_007 UV Coordinates
- } //End of Cube_007 Mesh
- } //End of Cube
-} //End of Root Frame
diff --git a/models/meshnode_pane.obj b/models/meshnode_pane.obj
new file mode 100644
index 0000000..542a31b
--- /dev/null
+++ b/models/meshnode_pane.obj
@@ -0,0 +1,86 @@
+# Blender v2.76 (sub 0) OBJ File: 'meshnode_pane.blend'
+# www.blender.org
+mtllib meshnode_pane.mtl
+v -0.312500 -5.000000 -5.000000
+v -0.312500 5.000000 -5.000000
+v 0.312500 5.000000 -5.000000
+v 0.312500 -5.000000 -5.000000
+v -0.312500 5.000000 0.000000
+v -0.312500 -5.000000 0.000000
+v 0.312500 5.000000 0.000000
+v 0.312500 -5.000000 0.000000
+v 5.000000 -5.000000 -0.312500
+v 5.000000 5.000000 -0.312500
+v 5.000000 5.000000 0.312500
+v 5.000000 -5.000000 0.312500
+v 0.000000 5.000000 -0.312500
+v 0.000000 -5.000000 -0.312500
+v 0.000000 5.000000 0.312500
+v 0.000000 -5.000000 0.312500
+v -0.312500 -5.000000 5.000000
+v -0.312500 5.000000 5.000000
+v 0.312500 5.000000 5.000000
+v 0.312500 -5.000000 5.000000
+v -0.312500 5.000000 0.000000
+v -0.312500 -5.000000 0.000000
+v 0.312500 5.000000 0.000000
+v 0.312500 -5.000000 0.000000
+v -5.000000 -5.000000 -0.312500
+v -5.000000 5.000000 -0.312500
+v -5.000000 5.000000 0.312500
+v -5.000000 -5.000000 0.312500
+v 0.000000 5.000000 -0.312500
+v 0.000000 -5.000000 -0.312500
+v 0.000000 5.000000 0.312500
+v 0.000000 -5.000000 0.312500
+vt 0.500000 1.000000
+vt 1.000000 1.000000
+vt 1.000000 0.000000
+vt 0.500000 0.000000
+vt 0.500000 0.937500
+vt 1.000000 0.937500
+vt 1.000000 0.062500
+vt 0.500000 0.062500
+vt 0.937500 1.000000
+vt 0.937500 0.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 0.062500 1.000000
+vt 0.062500 0.000000
+vt 0.000000 0.937500
+vt 0.000000 0.062500
+vn -1.000000 0.000000 0.000000
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+g Cube_Cube.001_Pane_1
+usemtl Pane_1
+s off
+f 5/1/1 2/2/1 1/3/1 6/4/1
+f 7/5/2 3/6/2 2/2/2 5/1/2
+f 6/4/3 1/3/3 4/7/3 8/8/3
+f 2/9/4 3/2/4 4/3/4 1/10/4
+f 4/3/5 3/2/5 7/1/5 8/4/5
+g Cube_Cube.001_Pane_2
+usemtl Pane_2
+f 13/1/4 10/11/4 9/12/4 14/4/4
+f 10/11/5 11/13/5 12/14/5 9/12/5
+f 10/15/2 13/5/2 15/1/2 11/11/2
+f 12/12/3 16/4/3 14/8/3 9/16/3
+f 11/11/6 15/1/6 16/4/6 12/12/6
+g Cube_Cube.001_Pane_3
+usemtl Pane_3
+f 19/11/6 18/13/6 17/14/6 20/12/6
+f 17/12/3 22/4/3 24/8/3 20/16/3
+f 19/15/2 23/5/2 21/1/2 18/11/2
+f 18/11/1 21/1/1 22/4/1 17/12/1
+f 19/11/5 20/12/5 24/4/5 23/1/5
+g Cube_Cube.001_Pane_4
+usemtl Pane_4
+f 27/9/1 26/2/1 25/3/1 28/10/1
+f 32/4/3 28/3/3 25/7/3 30/8/3
+f 29/5/2 26/6/2 27/2/2 31/1/2
+f 28/3/6 32/4/6 31/1/6 27/2/6
+f 26/2/4 29/1/4 30/4/4 25/3/4
diff --git a/models/meshnode_plant.obj b/models/meshnode_plant.obj
new file mode 100644
index 0000000..792cf78
--- /dev/null
+++ b/models/meshnode_plant.obj
@@ -0,0 +1,34 @@
+# Blender v2.76 (sub 0) OBJ File: 'meshnode_plant.blend'
+# www.blender.org
+mtllib meshnode_plant.mtl
+o Cube
+v -3.531999 5.000000 3.539069
+v 3.539071 5.000000 -3.531997
+v 3.531999 5.000000 -3.539069
+v -3.539071 5.000000 3.531997
+v -3.532001 -5.000000 3.539069
+v 3.539071 -5.000000 -3.531996
+v 3.531999 -5.000000 -3.539069
+v -3.539070 -5.000000 3.531997
+v -3.539068 -5.000000 -3.532000
+v -3.531997 -5.000000 -3.539071
+v 3.539068 -5.000000 3.532000
+v 3.531995 -5.000000 3.539071
+v -3.539069 5.000000 -3.531999
+v -3.531997 5.000000 -3.539071
+v 3.539069 5.000000 3.531999
+v 3.531997 5.000000 3.539071
+vt 1.000000 1.000000
+vt 1.000000 0.000000
+vt 0.000000 -0.000000
+vt 0.000000 1.000000
+vn 0.707100 -0.000000 0.707100
+vn -0.707100 -0.000000 -0.707100
+vn 0.707100 -0.000000 -0.707100
+vn -0.707100 0.000000 0.707100
+usemtl Material
+s off
+f 1/1/1 5/2/1 6/3/1 2/4/1
+f 8/2/2 4/1/2 3/4/2 7/3/2
+f 10/2/3 14/1/3 15/4/3 11/3/3
+f 13/1/4 9/2/4 12/3/4 16/4/4
diff --git a/models/meshnode_plant.x b/models/meshnode_plant.x
deleted file mode 100644
index 657d128..0000000
--- a/models/meshnode_plant.x
+++ /dev/null
@@ -1,99 +0,0 @@
-xof 0303txt 0032
-
-Frame Root {
- FrameTransformMatrix {
- 1.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 1.000000, 0.000000,
- 0.000000, 1.000000,-0.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Frame Cube {
- FrameTransformMatrix {
- 3.535533,-3.535535, 0.000000, 0.000000,
- 3.535535, 3.535533, 0.000000, 0.000000,
- 0.000000, 0.000000, 5.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Mesh { //Cube_003 Mesh
- 16;
- -0.001000;-1.000000; 1.000000;,
- -0.001000;-1.000000;-1.000000;,
- -0.001000; 1.000000;-1.000000;,
- -0.001000; 1.000000; 1.000000;,
- 0.001000;-1.000000;-1.000000;,
- 0.001000;-1.000000; 1.000000;,
- 0.001000; 1.000000; 1.000000;,
- 0.001000; 1.000000;-1.000000;,
- -1.000000;-0.001000;-1.000000;,
- -1.000000;-0.001000; 1.000000;,
- 1.000000;-0.001000; 1.000000;,
- 1.000000;-0.001000;-1.000000;,
- -1.000000; 0.001000; 1.000000;,
- -1.000000; 0.001000;-1.000000;,
- 1.000000; 0.001000;-1.000000;,
- 1.000000; 0.001000; 1.000000;;
- 4;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;;
- MeshNormals { //Cube_003 Normals
- 16;
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;;
- 4;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;;
- } //End of Cube_003 Normals
- MeshMaterialList { //Cube_003 Material List
- 1;
- 4;
- 0,
- 0,
- 0,
- 0;;
- Material Material {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.073171; 0.073171; 0.073171;;
- 0.000000; 0.000000; 0.000000;;
- }
- } //End of Cube_003 Material List
- MeshTextureCoords { //Cube_003 UV Coordinates
- 16;
- 0.000000; 0.000000;,
- 0.000000; 1.000000;,
- 1.000000; 1.000000;,
- 1.000000; 0.000000;,
- -0.000000; 1.000000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 1.000000;,
- 0.000000; 0.000000;,
- 0.000000; 1.000000;,
- 1.000000; 1.000000;,
- 1.000000; 0.000000;;
- } //End of Cube_003 UV Coordinates
- } //End of Cube_003 Mesh
- } //End of Cube
-} //End of Root Frame
diff --git a/models/meshnode_slab.x b/models/meshnode_slab.x
deleted file mode 100644
index 1b5ec68..0000000
--- a/models/meshnode_slab.x
+++ /dev/null
@@ -1,130 +0,0 @@
-xof 0303txt 0032
-
-Frame Root {
- FrameTransformMatrix {
- 1.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 1.000000, 0.000000,
- 0.000000, 1.000000,-0.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Frame Cube {
- FrameTransformMatrix {
- 5.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 5.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 5.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Mesh { //Cube_001 Mesh
- 24;
- -1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000;-1.000000; 0.000000;,
- -1.000000;-1.000000; 0.000000;,
- -1.000000; 1.000000; 0.000000;,
- 1.000000; 1.000000; 0.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000; 0.000000;,
- 1.000000; 1.000000; 0.000000;,
- 1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000;-1.000000; 0.000000;,
- 1.000000;-1.000000; 0.000000;,
- 1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000;-1.000000;,
- -1.000000; 1.000000; 0.000000;,
- -1.000000;-1.000000; 0.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000; 0.000000;,
- -1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000; 0.000000;;
- 6;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;;
- MeshNormals { //Cube_001 Normals
- 24;
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;;
- 6;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;;
- } //End of Cube_001 Normals
- MeshMaterialList { //Cube_001 Material List
- 1;
- 6;
- 0,
- 0,
- 0,
- 0,
- 0,
- 0;;
- Material Material {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.073171; 0.073171; 0.073171;;
- 0.000000; 0.000000; 0.000000;;
- TextureFilename {"wood.png";}
- }
- } //End of Cube_001 Material List
- MeshTextureCoords { //Cube_001 UV Coordinates
- 24;
- 0.000000; 1.000000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 1.000000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;;
- } //End of Cube_001 UV Coordinates
- } //End of Cube_001 Mesh
- } //End of Cube
-} //End of Root Frame
diff --git a/models/meshnode_stair.x b/models/meshnode_stair.x
deleted file mode 100644
index b3d4a02..0000000
--- a/models/meshnode_stair.x
+++ /dev/null
@@ -1,204 +0,0 @@
-xof 0303txt 0032
-
-Frame Root {
- FrameTransformMatrix {
- 1.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 1.000000, 0.000000,
- 0.000000, 1.000000,-0.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Frame Cube {
- FrameTransformMatrix {
- 5.000000, 0.000000, 0.000000, 0.000000,
- 0.000000, 5.000000, 0.000000, 0.000000,
- 0.000000, 0.000000, 5.000000, 0.000000,
- 0.000000, 0.000000, 0.000000, 1.000000;;
- }
- Mesh { //Cube_002 Mesh
- 44;
- 1.000000; 0.000000; 1.000000;,
- -1.000000; 0.000000; 1.000000;,
- -1.000000; 1.000000; 1.000000;,
- 1.000000; 1.000000; 1.000000;,
- 1.000000; 0.000000; 0.000000;,
- 1.000000; 0.000000; 1.000000;,
- 1.000000; 1.000000; 1.000000;,
- 1.000000; 1.000000; 0.000000;,
- -1.000000; 0.000000; 0.000000;,
- -1.000000; 0.000000; 1.000000;,
- 1.000000; 0.000000; 1.000000;,
- 1.000000; 0.000000; 0.000000;,
- -1.000000; 1.000000; 0.000000;,
- -1.000000; 1.000000; 1.000000;,
- -1.000000; 0.000000; 1.000000;,
- -1.000000; 0.000000; 0.000000;,
- -1.000000; 1.000000; 1.000000;,
- -1.000000; 1.000000; 0.000000;,
- 1.000000; 1.000000; 0.000000;,
- 1.000000; 1.000000; 1.000000;,
- -1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000;-1.000000;-1.000000;,
- 1.000000;-1.000000; 0.000000;,
- 1.000000; 1.000000; 0.000000;,
- 1.000000; 1.000000;-1.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000;-1.000000; 0.000000;,
- 1.000000;-1.000000; 0.000000;,
- 1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000;-1.000000;,
- -1.000000; 1.000000; 0.000000;,
- -1.000000;-1.000000; 0.000000;,
- -1.000000;-1.000000;-1.000000;,
- -1.000000; 1.000000; 0.000000;,
- -1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000;-1.000000;,
- 1.000000; 1.000000; 0.000000;,
- 1.000000;-1.000000; 0.000000;,
- -1.000000;-1.000000; 0.000000;,
- -1.000000; 0.000000; 0.000000;,
- 1.000000; 0.000000; 0.000000;;
- 11;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;,
- 4;24;25;26;27;,
- 4;28;29;30;31;,
- 4;32;33;34;35;,
- 4;36;37;38;39;,
- 4;40;41;42;43;;
- MeshNormals { //Cube_002 Normals
- 44;
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 0.000000;-1.000000; 0.000000;,
- 0.000000;-1.000000; 0.000000;,
- 0.000000;-1.000000; 0.000000;,
- 0.000000;-1.000000; 0.000000;,
- -1.000000;-0.000000; 0.000000;,
- -1.000000;-0.000000; 0.000000;,
- -1.000000;-0.000000; 0.000000;,
- -1.000000;-0.000000; 0.000000;,
- -0.000000; 1.000000; 0.000000;,
- -0.000000; 1.000000; 0.000000;,
- -0.000000; 1.000000; 0.000000;,
- -0.000000; 1.000000; 0.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 0.000000; 0.000000;-1.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- 1.000000;-0.000000; 0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -0.000000;-1.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- -1.000000; 0.000000;-0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000; 1.000000; 0.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;,
- 0.000000;-0.000000; 1.000000;;
- 11;
- 4;0;1;2;3;,
- 4;4;5;6;7;,
- 4;8;9;10;11;,
- 4;12;13;14;15;,
- 4;16;17;18;19;,
- 4;20;21;22;23;,
- 4;24;25;26;27;,
- 4;28;29;30;31;,
- 4;32;33;34;35;,
- 4;36;37;38;39;,
- 4;40;41;42;43;;
- } //End of Cube_002 Normals
- MeshMaterialList { //Cube_002 Material List
- 1;
- 11;
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0;;
- Material Material {
- 0.640000; 0.640000; 0.640000; 1.000000;;
- 96.078431;
- 0.073171; 0.073171; 0.073171;;
- 0.000000; 0.000000; 0.000000;;
- }
- } //End of Cube_002 Material List
- MeshTextureCoords { //Cube_002 UV Coordinates
- 44;
- 1.000000; 0.500000;,
- 0.000000; 0.500000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 0.500000; 0.500000;,
- 0.500000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 0.500000;,
- 0.000000; 0.500000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 0.500000;,
- 0.000000; 0.500000;,
- 0.000000; 0.000000;,
- 0.500000; 0.000000;,
- 0.500000; 0.500000;,
- 1.000000; 0.000000;,
- 1.000000; 0.500000;,
- 0.000000; 0.500000;,
- -0.000000; 0.000000;,
- -0.000000; 1.000000;,
- 0.000000; 0.000000;,
- 1.000000; 0.000000;,
- 1.000000; 1.000000;,
- -0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- -0.000000; 1.000000;,
- 0.000000; 0.498216;,
- 1.000000; 0.498216;,
- 1.000000; 1.000000;,
- 1.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 1.000000;,
- 0.000000; 1.000000;,
- 0.000000; 0.500000;,
- 1.000000; 0.500000;;
- } //End of Cube_002 UV Coordinates
- } //End of Cube_002 Mesh
- } //End of Cube
-} //End of Root Frame
diff --git a/models/meshnode_wall.obj b/models/meshnode_wall.obj
new file mode 100644
index 0000000..246e448
--- /dev/null
+++ b/models/meshnode_wall.obj
@@ -0,0 +1,112 @@
+# Blender v2.76 (sub 0) OBJ File: 'meshnode_wall.blend'
+# www.blender.org
+mtllib meshnode_wall.mtl
+v -2.500000 -5.000000 2.500000
+v -2.500000 5.000000 2.500000
+v -2.500000 -5.000000 -2.500000
+v -2.500000 5.000000 -2.500000
+v 2.500000 -5.000000 2.500000
+v 2.500000 5.000000 2.500000
+v 2.500000 -5.000000 -2.500000
+v 2.500000 5.000000 -2.500000
+v 2.500000 -5.000000 1.875000
+v 2.500000 3.750000 1.875000
+v 2.500000 -5.000000 -1.875000
+v 2.500000 3.750000 -1.875000
+v 5.000000 -5.000000 1.875000
+v 5.000000 3.750000 1.875000
+v 5.000000 -5.000000 -1.875000
+v 5.000000 3.750000 -1.875000
+v -2.500000 -5.000000 -1.875000
+v -2.500000 3.750000 -1.875000
+v -2.500000 -5.000000 1.875000
+v -2.500000 3.750000 1.875000
+v -5.000000 -5.000000 -1.875000
+v -5.000000 3.750000 -1.875000
+v -5.000000 -5.000000 1.875000
+v -5.000000 3.750000 1.875000
+v 1.875000 -5.000000 -2.500000
+v 1.875000 3.750000 -2.500000
+v -1.875000 -5.000000 -2.500000
+v -1.875000 3.750000 -2.500000
+v 1.875000 -5.000000 -5.000000
+v 1.875000 3.750000 -5.000000
+v -1.875000 -5.000000 -5.000000
+v -1.875000 3.750000 -5.000000
+v -1.875000 -5.000000 2.500000
+v -1.875000 3.750000 2.500000
+v 1.875000 -5.000000 2.500000
+v 1.875000 3.750000 2.500000
+v -1.875000 -5.000000 5.000000
+v -1.875000 3.750000 5.000000
+v 1.875000 -5.000000 5.000000
+v 1.875000 3.750000 5.000000
+vt 0.750000 1.000000
+vt 0.250000 1.000000
+vt 0.250000 0.000000
+vt 0.750000 0.000000
+vt 0.750000 0.250000
+vt 0.750000 0.750000
+vt 0.250000 0.750000
+vt 0.250000 0.250000
+vt 0.250000 0.875000
+vt 0.000000 0.875000
+vt 0.000000 0.000000
+vt 1.000000 0.875000
+vt 0.750000 0.875000
+vt 1.000000 -0.000000
+vt 0.312500 0.750000
+vt 0.687500 0.750000
+vt 0.687500 1.000000
+vt 0.312500 1.000000
+vt 0.312500 0.000000
+vt 0.687500 0.000000
+vt 0.687500 0.250000
+vt 0.312500 0.250000
+vt 0.250000 0.312500
+vt 0.250000 0.687500
+vt 0.000000 0.687500
+vt 0.000000 0.312500
+vt 0.750000 0.687500
+vt 0.750000 0.312500
+vt 1.000000 0.312500
+vt 1.000000 0.687500
+vn -1.000000 0.000000 0.000000
+vn 0.000000 0.000000 -1.000000
+vn 1.000000 0.000000 0.000000
+vn 0.000000 0.000000 1.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.000000 1.000000 0.000000
+g Cube_Cube.001_Pillar
+usemtl Pillar
+s off
+f 2/1/1 4/2/1 3/3/1 1/4/1
+f 4/1/2 8/2/2 7/3/2 3/4/2
+f 8/1/3 6/2/3 5/3/3 7/4/3
+f 6/1/4 2/2/4 1/3/4 5/4/4
+f 1/5/5 3/6/5 7/7/5 5/8/5
+f 6/7/6 8/8/6 4/5/6 2/6/6
+g Cube_Cube.001_Wall_1
+usemtl Wall_1
+f 28/9/1 32/10/1 31/11/1 27/3/1
+f 30/12/3 26/13/3 25/4/3 29/14/3
+f 25/15/5 27/16/5 31/17/5 29/18/5
+f 30/19/6 32/20/6 28/21/6 26/22/6
+g Cube_Cube.001_Wall_2
+usemtl Wall_2
+f 12/9/2 16/10/2 15/11/2 11/3/2
+f 14/12/4 10/13/4 9/4/4 13/14/4
+f 9/23/5 11/24/5 15/25/5 13/26/5
+f 14/25/6 16/26/6 12/23/6 10/24/6
+g Cube_Cube.001_Wall_3
+usemtl Wall_3
+f 36/9/3 40/10/3 39/11/3 35/3/3
+f 38/12/1 34/13/1 33/4/1 37/14/1
+f 33/21/5 35/22/5 39/19/5 37/20/5
+f 38/17/6 40/18/6 36/15/6 34/16/6
+g Cube_Cube.001_Wall_4
+usemtl Wall_4
+f 20/9/4 24/10/4 23/11/4 19/3/4
+f 22/12/2 18/13/2 17/4/2 21/14/2
+f 17/27/5 19/28/5 23/29/5 21/30/5
+f 22/29/6 24/30/6 20/27/6 18/28/6
diff --git a/screenshot.png b/screenshot.png
new file mode 100644
index 0000000..ca8a5e3
Binary files /dev/null and b/screenshot.png differ
diff --git a/textures/meshnode_glue.png b/textures/meshnode_glue.png
new file mode 100644
index 0000000..154e2bc
Binary files /dev/null and b/textures/meshnode_glue.png differ
diff --git a/textures/meshnode_highlight.png b/textures/meshnode_highlight.png
new file mode 100644
index 0000000..cfa0aec
Binary files /dev/null and b/textures/meshnode_highlight.png differ
diff --git a/textures/meshnode_side.png b/textures/meshnode_side.png
deleted file mode 100644
index 7dff41a..0000000
Binary files a/textures/meshnode_side.png and /dev/null differ
diff --git a/textures/meshnode_top.png b/textures/meshnode_top.png
deleted file mode 100644
index 26da8ad..0000000
Binary files a/textures/meshnode_top.png and /dev/null differ
diff --git a/textures/meshnode_trans.png b/textures/meshnode_trans.png
index a82df66..5d0fc1b 100644
Binary files a/textures/meshnode_trans.png and b/textures/meshnode_trans.png differ