Merge branch 'sign'
|
@ -27,6 +27,13 @@ local NUMBER_OF_LINES = 4
|
||||||
local LINE_HEIGHT = 14
|
local LINE_HEIGHT = 14
|
||||||
local CHAR_WIDTH = 5
|
local CHAR_WIDTH = 5
|
||||||
|
|
||||||
|
|
||||||
|
-- Helper functions
|
||||||
|
local function round(num, idp)
|
||||||
|
local mult = 10^(idp or 0)
|
||||||
|
return math.floor(num * mult + 0.5) / mult
|
||||||
|
end
|
||||||
|
|
||||||
local string_to_array = function(str)
|
local string_to_array = function(str)
|
||||||
local tab = {}
|
local tab = {}
|
||||||
for i=1,string.len(str) do
|
for i=1,string.len(str) do
|
||||||
|
@ -103,9 +110,14 @@ local generate_line = function(s, ypos)
|
||||||
return texture
|
return texture
|
||||||
end
|
end
|
||||||
|
|
||||||
local generate_texture = function(lines)
|
local generate_texture = function(lines, signnodename)
|
||||||
local texture = "[combine:"..SIGN_WIDTH.."x"..SIGN_WIDTH
|
local texture = "[combine:"..SIGN_WIDTH.."x"..SIGN_WIDTH
|
||||||
local ypos = 9
|
local ypos
|
||||||
|
if signnodename == "mcl_signs:wall_sign" then
|
||||||
|
ypos = 29
|
||||||
|
else
|
||||||
|
ypos = -2
|
||||||
|
end
|
||||||
for i = 1, #lines do
|
for i = 1, #lines do
|
||||||
texture = texture..generate_line(lines[i], ypos)
|
texture = texture..generate_line(lines[i], ypos)
|
||||||
ypos = ypos + LINE_HEIGHT
|
ypos = ypos + LINE_HEIGHT
|
||||||
|
@ -113,23 +125,35 @@ local generate_texture = function(lines)
|
||||||
return texture
|
return texture
|
||||||
end
|
end
|
||||||
|
|
||||||
local n = 7/16 - 1/128
|
local n = 23/56 - 1/128
|
||||||
|
|
||||||
local signs = {
|
local signtext_info_wall = {
|
||||||
{delta = {x = 0, y = 0, z = n}, yaw = 0},
|
{delta = {x = 0, y = 0, z = n}, yaw = 0},
|
||||||
{delta = {x = n, y = 0, z = 0}, yaw = math.pi / -2},
|
{delta = {x = n, y = 0, z = 0}, yaw = math.pi / -2},
|
||||||
{delta = {x = 0, y = 0, z = -n}, yaw = math.pi},
|
{delta = {x = 0, y = 0, z = -n}, yaw = math.pi},
|
||||||
{delta = {x = -n, y = 0, z = 0}, yaw = math.pi / 2},
|
{delta = {x = -n, y = 0, z = 0}, yaw = math.pi / 2},
|
||||||
}
|
}
|
||||||
|
|
||||||
local m = 1/32 + 1/128
|
local signtext_info_standing = {}
|
||||||
|
|
||||||
local signs_yard = {
|
local m = -1/16 + 1/64
|
||||||
{delta = {x = 0, y = 0, z = -m}, yaw = 0},
|
for rot=0, 15 do
|
||||||
{delta = {x = -m, y = 0, z = 0}, yaw = math.pi / -2},
|
local yaw = math.pi*2 - (((math.pi*2) / 16) * rot)
|
||||||
{delta = {x = 0, y = 0, z = m}, yaw = math.pi},
|
local delta = vector.multiply(minetest.yaw_to_dir(yaw), m)
|
||||||
{delta = {x = m, y = 0, z = 0}, yaw = math.pi / 2},
|
table.insert(signtext_info_standing, { delta = delta, yaw = yaw })
|
||||||
}
|
end
|
||||||
|
|
||||||
|
local function get_rotation_level(facedir, nodename)
|
||||||
|
local rl = facedir * 4
|
||||||
|
if nodename == "mcl_signs:standing_sign22_5" then
|
||||||
|
rl = rl + 1
|
||||||
|
elseif nodename == "mcl_signs:standing_sign45" then
|
||||||
|
rl = rl + 2
|
||||||
|
elseif nodename == "mcl_signs:standing_sign67_5" then
|
||||||
|
rl = rl + 3
|
||||||
|
end
|
||||||
|
return rl
|
||||||
|
end
|
||||||
|
|
||||||
local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1}
|
local sign_groups = {handy=1,axey=1, flammable=1, deco_block=1, material_wood=1, attached_node=1}
|
||||||
|
|
||||||
|
@ -158,24 +182,36 @@ local update_sign = function(pos, fields, sender)
|
||||||
local objects = minetest.get_objects_inside_radius(pos, 0.5)
|
local objects = minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
for _, v in ipairs(objects) do
|
for _, v in ipairs(objects) do
|
||||||
if v:get_entity_name() == "mcl_signs:text" then
|
if v:get_entity_name() == "mcl_signs:text" then
|
||||||
v:set_properties({textures={generate_texture(create_lines(text))}})
|
v:set_properties({textures={generate_texture(create_lines(text), v:get_luaentity()._signnodename)}})
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- if there is no entity
|
-- if there is no entity
|
||||||
local sign_info
|
local sign_info
|
||||||
if minetest.get_node(pos).name == "mcl_signs:standing_sign" then
|
local n = minetest.get_node(pos)
|
||||||
sign_info = signs_yard[minetest.get_node(pos).param2 + 1]
|
local nn = n.name
|
||||||
elseif minetest.get_node(pos).name == "mcl_signs:wall_sign" then
|
if nn == "mcl_signs:standing_sign" or nn == "mcl_signs:standing_sign22_5" or nn == "mcl_signs:standing_sign45" or nn == "mcl_signs:standing_sign67_5" then
|
||||||
sign_info = signs[minetest.get_node(pos).param2 + 1]
|
sign_info = signtext_info_standing[get_rotation_level(n.param2, nn) + 1]
|
||||||
|
elseif nn == "mcl_signs:wall_sign" then
|
||||||
|
sign_info = signtext_info_wall[n.param2 + 1]
|
||||||
end
|
end
|
||||||
if sign_info == nil then
|
if sign_info == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local text_entity = minetest.add_entity({x = pos.x + sign_info.delta.x,
|
local text_entity = minetest.add_entity({
|
||||||
y = pos.y + sign_info.delta.y,
|
x = pos.x + sign_info.delta.x,
|
||||||
z = pos.z + sign_info.delta.z}, "mcl_signs:text")
|
y = pos.y + sign_info.delta.y,
|
||||||
|
z = pos.z + sign_info.delta.z}, "mcl_signs:text")
|
||||||
|
if nn == "mcl_signs:standing_sign22_5" then
|
||||||
|
sign_info.yaw = sign_info.yaw + math.pi / 8
|
||||||
|
elseif nn == "mcl_signs:standing_sign45" then
|
||||||
|
sign_info.yaw = sign_info.yaw + 2 * (math.pi / 8)
|
||||||
|
elseif nn == "mcl_signs:standing_sign67_5" then
|
||||||
|
sign_info.yaw = sign_info.yaw + 3 * (math.pi / 8)
|
||||||
|
end
|
||||||
|
text_entity:get_luaentity()._signnodename = nn
|
||||||
|
|
||||||
text_entity:setyaw(sign_info.yaw)
|
text_entity:setyaw(sign_info.yaw)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -210,9 +246,10 @@ minetest.register_node("mcl_signs:wall_sign", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
paramtype2 = "wallmounted",
|
paramtype2 = "wallmounted",
|
||||||
drawtype = "nodebox",
|
drawtype = "mesh",
|
||||||
node_box = {type = "wallmounted", wall_side = {-0.499, -1/16, -7/16, -7/16, 7/16, 7/16}},
|
mesh = "mcl_signs_signonwallmount.obj",
|
||||||
tiles = {"signs_wall.png"},
|
selection_box = {type = "wallmounted", wall_side = {-0.5, -7/28, -0.5, -23/56, 7/28, 0.5}},
|
||||||
|
tiles = {"mcl_signs_sign.png"},
|
||||||
groups = sign_groups,
|
groups = sign_groups,
|
||||||
stack_max = 16,
|
stack_max = 16,
|
||||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||||
|
@ -222,16 +259,14 @@ minetest.register_node("mcl_signs:wall_sign", {
|
||||||
local under = pointed_thing.under
|
local under = pointed_thing.under
|
||||||
|
|
||||||
-- Use pointed node's on_rightclick function first, if present
|
-- Use pointed node's on_rightclick function first, if present
|
||||||
local node = minetest.get_node(under)
|
local node_under = minetest.get_node(under)
|
||||||
if placer and not placer:get_player_control().sneak then
|
if placer and not placer:get_player_control().sneak then
|
||||||
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
|
if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then
|
||||||
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack
|
return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local dir = {x = under.x - above.x,
|
local dir = vector.subtract(under, above)
|
||||||
y = under.y - above.y,
|
|
||||||
z = under.z - above.z}
|
|
||||||
|
|
||||||
-- Only build when it's legal
|
-- Only build when it's legal
|
||||||
local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name]
|
local abovenodedef = minetest.registered_nodes[minetest.get_node(above).name]
|
||||||
|
@ -242,44 +277,73 @@ minetest.register_node("mcl_signs:wall_sign", {
|
||||||
local wdir = minetest.dir_to_wallmounted(dir)
|
local wdir = minetest.dir_to_wallmounted(dir)
|
||||||
|
|
||||||
local placer_pos = placer:getpos()
|
local placer_pos = placer:getpos()
|
||||||
if placer_pos then
|
|
||||||
dir = {
|
|
||||||
x = above.x - placer_pos.x,
|
|
||||||
y = above.y - placer_pos.y,
|
|
||||||
z = above.z - placer_pos.z
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
local fdir = minetest.dir_to_facedir(dir)
|
local fdir = minetest.dir_to_facedir(dir)
|
||||||
|
|
||||||
local sign_info
|
local sign_info
|
||||||
local place_pos
|
local nodeitem = ItemStack(itemstack)
|
||||||
|
-- Ceiling
|
||||||
if wdir == 0 then
|
if wdir == 0 then
|
||||||
--how would you add sign to ceiling?
|
--how would you add sign to ceiling?
|
||||||
return itemstack
|
return itemstack
|
||||||
|
-- Floor
|
||||||
elseif wdir == 1 then
|
elseif wdir == 1 then
|
||||||
place_pos = above
|
-- Standing sign
|
||||||
local stand = ItemStack(itemstack)
|
|
||||||
stand:set_name("mcl_signs:standing_sign")
|
-- Determine the sign rotation based on player's yaw
|
||||||
local _, success = minetest.item_place_node(stand, placer, pointed_thing, fdir)
|
local yaw = math.pi*2 - placer:get_look_horizontal()
|
||||||
|
|
||||||
|
-- Select one of 16 possible rotations (0-15)
|
||||||
|
local rotation_level = round((yaw / (math.pi*2)) * 16)
|
||||||
|
|
||||||
|
if rotation_level > 15 then
|
||||||
|
rotation_level = 0
|
||||||
|
elseif rotation_level < 0 then
|
||||||
|
rotation_level = 15
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The actual rotation is a combination of predefined mesh and facedir (see node definition)
|
||||||
|
if rotation_level % 4 == 0 then
|
||||||
|
nodeitem:set_name("mcl_signs:standing_sign")
|
||||||
|
elseif rotation_level % 4 == 1 then
|
||||||
|
nodeitem:set_name("mcl_signs:standing_sign22_5")
|
||||||
|
elseif rotation_level % 4 == 2 then
|
||||||
|
nodeitem:set_name("mcl_signs:standing_sign45")
|
||||||
|
elseif rotation_level % 4 == 3 then
|
||||||
|
nodeitem:set_name("mcl_signs:standing_sign67_5")
|
||||||
|
end
|
||||||
|
fdir = math.floor(rotation_level / 4)
|
||||||
|
|
||||||
|
-- Place the node!
|
||||||
|
local _, success = minetest.item_place_node(nodeitem, placer, pointed_thing, fdir)
|
||||||
if not success then
|
if not success then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
sign_info = signs_yard[fdir + 1]
|
sign_info = signtext_info_standing[rotation_level + 1]
|
||||||
|
-- Side
|
||||||
else
|
else
|
||||||
place_pos = above
|
-- Wall sign
|
||||||
local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir)
|
local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir)
|
||||||
if not success then
|
if not success then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
sign_info = signs[fdir + 1]
|
sign_info = signtext_info_wall[fdir + 1]
|
||||||
end
|
end
|
||||||
|
|
||||||
local text = minetest.add_entity({
|
-- Determine spawn position of entity
|
||||||
|
local place_pos
|
||||||
|
if minetest.registered_nodes[node_under.name].buildable_to then
|
||||||
|
place_pos = under
|
||||||
|
else
|
||||||
|
place_pos = above
|
||||||
|
end
|
||||||
|
|
||||||
|
local text_entity = minetest.add_entity({
|
||||||
x = place_pos.x + sign_info.delta.x,
|
x = place_pos.x + sign_info.delta.x,
|
||||||
y = place_pos.y + sign_info.delta.y,
|
y = place_pos.y + sign_info.delta.y,
|
||||||
z = place_pos.z + sign_info.delta.z}, "mcl_signs:text")
|
z = place_pos.z + sign_info.delta.z}, "mcl_signs:text")
|
||||||
text:setyaw(sign_info.yaw)
|
text_entity:setyaw(sign_info.yaw)
|
||||||
|
text_entity:get_luaentity()._signnodename = nodeitem:get_name()
|
||||||
|
|
||||||
if not minetest.setting_getbool("creative_mode") then
|
if not minetest.setting_getbool("creative_mode") then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
|
@ -300,19 +364,23 @@ minetest.register_node("mcl_signs:wall_sign", {
|
||||||
_mcl_blast_resistance = 5,
|
_mcl_blast_resistance = 5,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("mcl_signs:standing_sign", {
|
|
||||||
|
-- Standing sign nodes.
|
||||||
|
-- 4 rotations at 0°, 22.5°, 45° and 67.5°.
|
||||||
|
-- These are 4 out of 16 possible rotations.
|
||||||
|
-- With facedir the remaining 12 rotations are constructed.
|
||||||
|
|
||||||
|
-- 0°
|
||||||
|
local ssign = {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
walkable = false,
|
walkable = false,
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
drawtype = "nodebox",
|
drawtype = "mesh",
|
||||||
node_box = {type = "fixed", fixed = {
|
mesh = "mcl_signs_1sign0.obj",
|
||||||
{-7/16, -1/16, -1/32, 7/16, 7/16, 1/32},
|
selection_box = {type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0.5, 0.2}},
|
||||||
{-1/16, -0.5, -1/32, 1/16, -1/16, 1/32},
|
tiles = {"mcl_signs_sign.png"},
|
||||||
}},
|
|
||||||
selection_box = {type = "fixed", fixed = {-7/16, -0.5, -1/32, 7/16, 7/16, 1/32}},
|
|
||||||
tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"},
|
|
||||||
groups = sign_groups,
|
groups = sign_groups,
|
||||||
drop = "mcl_signs:wall_sign",
|
drop = "mcl_signs:wall_sign",
|
||||||
stack_max = 16,
|
stack_max = 16,
|
||||||
|
@ -327,7 +395,24 @@ minetest.register_node("mcl_signs:standing_sign", {
|
||||||
end,
|
end,
|
||||||
_mcl_hardness = 1,
|
_mcl_hardness = 1,
|
||||||
_mcl_blast_resistance = 5,
|
_mcl_blast_resistance = 5,
|
||||||
})
|
}
|
||||||
|
|
||||||
|
-- 22.5°
|
||||||
|
minetest.register_node("mcl_signs:standing_sign", ssign)
|
||||||
|
local ssign22_5 = table.copy(ssign)
|
||||||
|
ssign22_5.mesh = "mcl_signs_1sign22.5.obj"
|
||||||
|
|
||||||
|
-- 45°
|
||||||
|
minetest.register_node("mcl_signs:standing_sign22_5", ssign22_5)
|
||||||
|
local ssign45 = table.copy(ssign)
|
||||||
|
ssign45.mesh = "mcl_signs_1sign45.obj"
|
||||||
|
minetest.register_node("mcl_signs:standing_sign45", ssign45)
|
||||||
|
|
||||||
|
-- 67.5°
|
||||||
|
local ssign67 = table.copy(ssign)
|
||||||
|
ssign67.mesh = "mcl_signs_1sign67.5.obj"
|
||||||
|
minetest.register_node("mcl_signs:standing_sign67_5", ssign67)
|
||||||
|
|
||||||
|
|
||||||
minetest.register_entity("mcl_signs:text", {
|
minetest.register_entity("mcl_signs:text", {
|
||||||
collisionbox = { 0, 0, 0, 0, 0, 0 },
|
collisionbox = { 0, 0, 0, 0, 0, 0 },
|
||||||
|
@ -336,20 +421,28 @@ minetest.register_entity("mcl_signs:text", {
|
||||||
physical = false,
|
physical = false,
|
||||||
collide_with_objects = false,
|
collide_with_objects = false,
|
||||||
|
|
||||||
on_activate = function(self)
|
_signnodename = nil, -- node name of sign node to which the text belongs
|
||||||
|
|
||||||
|
on_activate = function(self, staticdata)
|
||||||
|
if staticdata ~= nil and staticdata ~= "" then
|
||||||
|
local des = minetest.deserialize(staticdata)
|
||||||
|
if des then
|
||||||
|
self._signnodename = des._signnodename
|
||||||
|
end
|
||||||
|
end
|
||||||
local meta = minetest.get_meta(self.object:getpos())
|
local meta = minetest.get_meta(self.object:getpos())
|
||||||
local text = meta:get_string("text")
|
local text = meta:get_string("text")
|
||||||
self.object:set_properties({
|
self.object:set_properties({
|
||||||
textures={generate_texture(create_lines(text))},
|
textures={generate_texture(create_lines(text), self._signnodename)},
|
||||||
})
|
})
|
||||||
self.object:set_armor_groups({ immortal = 1 })
|
self.object:set_armor_groups({ immortal = 1 })
|
||||||
end
|
end,
|
||||||
|
get_staticdata = function(self)
|
||||||
|
local out = { _signnodename = self._signnodename }
|
||||||
|
return minetest.serialize(out)
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
if minetest.setting_get("log_mods") then
|
|
||||||
minetest.log("action", "[mcl_signs] loaded")
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "fuel",
|
type = "fuel",
|
||||||
recipe = "mcl_signs:wall_sign",
|
recipe = "mcl_signs:wall_sign",
|
||||||
|
@ -371,3 +464,8 @@ end
|
||||||
|
|
||||||
minetest.register_alias("signs:sign_wall", "mcl_signs:wall_sign")
|
minetest.register_alias("signs:sign_wall", "mcl_signs:wall_sign")
|
||||||
minetest.register_alias("signs:sign_yard", "mcl_signs:standing_sign")
|
minetest.register_alias("signs:sign_yard", "mcl_signs:standing_sign")
|
||||||
|
|
||||||
|
|
||||||
|
if minetest.setting_get("log_mods") then
|
||||||
|
minetest.log("action", "[mcl_signs] loaded")
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Blender v2.76 (sub 0) OBJ File: '1sign0.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib 1sign0.mtl
|
||||||
|
o wood_Cube.001
|
||||||
|
v 0.461724 0.038277 -0.038477
|
||||||
|
v 0.461724 0.500000 -0.038477
|
||||||
|
v 0.461724 0.038277 0.038477
|
||||||
|
v 0.461724 0.500000 0.038477
|
||||||
|
v -0.461724 0.038277 -0.038477
|
||||||
|
v -0.461724 0.500000 -0.038477
|
||||||
|
v -0.461724 0.038277 0.038477
|
||||||
|
v -0.461724 0.500000 0.038477
|
||||||
|
v 0.038477 -0.499999 -0.038477
|
||||||
|
v 0.038477 0.038679 -0.038477
|
||||||
|
v 0.038477 -0.499999 0.038477
|
||||||
|
v 0.038477 0.038679 0.038477
|
||||||
|
v -0.038477 -0.499999 -0.038477
|
||||||
|
v -0.038477 0.038679 -0.038477
|
||||||
|
v -0.038477 -0.499999 0.038477
|
||||||
|
v -0.038477 0.038679 0.038477
|
||||||
|
vt 0.031250 0.562500
|
||||||
|
vt 0.031250 0.937500
|
||||||
|
vt 0.000000 0.937500
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.812500 0.562500
|
||||||
|
vt 0.812500 0.937500
|
||||||
|
vt 0.437500 0.937500
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.406250 0.937500
|
||||||
|
vt 0.406250 0.562500
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.937500
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 0.062500
|
||||||
|
vt 0.031250 0.500000
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.093750 0.500000
|
||||||
|
vt 0.093750 0.062500
|
||||||
|
vt 0.062500 0.500000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.093750 0.562500
|
||||||
|
vt 0.062500 0.562500
|
||||||
|
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
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||||
|
f 7/8/3 8/7/3 6/9/3 5/10/3
|
||||||
|
f 5/10/4 6/9/4 2/2/4 1/1/4
|
||||||
|
f 3/11/5 7/12/5 5/13/5 1/9/5
|
||||||
|
f 8/11/6 4/14/6 2/2/6 6/9/6
|
||||||
|
f 9/15/1 10/16/1 12/17/1 11/18/1
|
||||||
|
f 11/19/2 12/20/2 16/21/2 15/22/2
|
||||||
|
f 15/22/3 16/21/3 14/23/3 13/24/3
|
||||||
|
f 13/24/4 14/23/4 10/16/4 9/15/4
|
||||||
|
f 11/23/5 15/21/5 13/25/5 9/26/5
|
||||||
|
f 16/16/6 12/23/6 10/26/6 14/1/6
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Blender v2.76 (sub 0) OBJ File: '1sign22.5.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib 1sign22.5.mtl
|
||||||
|
o wood_Cube.001
|
||||||
|
v 0.441302 0.038277 0.141146
|
||||||
|
v 0.441302 0.500000 0.141146
|
||||||
|
v 0.411853 0.038277 0.212242
|
||||||
|
v 0.411853 0.500000 0.212242
|
||||||
|
v -0.411853 0.038277 -0.212242
|
||||||
|
v -0.411853 0.500000 -0.212242
|
||||||
|
v -0.441302 0.038277 -0.141146
|
||||||
|
v -0.441302 0.500000 -0.141146
|
||||||
|
v 0.050273 -0.499999 -0.020824
|
||||||
|
v 0.050273 0.038679 -0.020824
|
||||||
|
v 0.020824 -0.499999 0.050273
|
||||||
|
v 0.020824 0.038679 0.050273
|
||||||
|
v -0.020824 -0.499999 -0.050273
|
||||||
|
v -0.020824 0.038679 -0.050273
|
||||||
|
v -0.050273 -0.499999 0.020824
|
||||||
|
v -0.050273 0.038679 0.020824
|
||||||
|
vt 0.031250 0.562500
|
||||||
|
vt 0.031250 0.937500
|
||||||
|
vt 0.000000 0.937500
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.812500 0.562500
|
||||||
|
vt 0.812500 0.937500
|
||||||
|
vt 0.437500 0.937500
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.406250 0.937500
|
||||||
|
vt 0.406250 0.562500
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.937500
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 0.062500
|
||||||
|
vt 0.031250 0.500000
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.093750 0.500000
|
||||||
|
vt 0.093750 0.062500
|
||||||
|
vt 0.062500 0.500000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.093750 0.562500
|
||||||
|
vt 0.062500 0.562500
|
||||||
|
vn 0.923900 0.000000 0.382700
|
||||||
|
vn -0.382700 0.000000 0.923900
|
||||||
|
vn -0.923900 0.000000 -0.382700
|
||||||
|
vn 0.382700 0.000000 -0.923900
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||||
|
f 7/8/3 8/7/3 6/9/3 5/10/3
|
||||||
|
f 5/10/4 6/9/4 2/2/4 1/1/4
|
||||||
|
f 3/11/5 7/12/5 5/13/5 1/9/5
|
||||||
|
f 8/11/6 4/14/6 2/2/6 6/9/6
|
||||||
|
f 9/15/1 10/16/1 12/17/1 11/18/1
|
||||||
|
f 11/19/2 12/20/2 16/21/2 15/22/2
|
||||||
|
f 15/22/3 16/21/3 14/23/3 13/24/3
|
||||||
|
f 13/24/4 14/23/4 10/16/4 9/15/4
|
||||||
|
f 11/23/5 15/21/5 13/25/5 9/26/5
|
||||||
|
f 16/16/6 12/23/6 10/26/6 14/1/6
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Blender v2.76 (sub 0) OBJ File: '1sign45.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib 1sign45.mtl
|
||||||
|
o wood_Cube.001
|
||||||
|
v 0.353695 0.038277 0.299281
|
||||||
|
v 0.353695 0.500000 0.299281
|
||||||
|
v 0.299281 0.038277 0.353696
|
||||||
|
v 0.299281 0.500000 0.353696
|
||||||
|
v -0.299281 0.038277 -0.353696
|
||||||
|
v -0.299281 0.500000 -0.353696
|
||||||
|
v -0.353695 0.038277 -0.299281
|
||||||
|
v -0.353695 0.500000 -0.299281
|
||||||
|
v 0.054415 -0.499999 0.000000
|
||||||
|
v 0.054415 0.038679 0.000000
|
||||||
|
v -0.000000 -0.499999 0.054415
|
||||||
|
v -0.000000 0.038679 0.054415
|
||||||
|
v 0.000000 -0.499999 -0.054415
|
||||||
|
v 0.000000 0.038679 -0.054415
|
||||||
|
v -0.054415 -0.499999 -0.000000
|
||||||
|
v -0.054415 0.038679 -0.000000
|
||||||
|
vt 0.031250 0.562500
|
||||||
|
vt 0.031250 0.937500
|
||||||
|
vt 0.000000 0.937500
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.812500 0.562500
|
||||||
|
vt 0.812500 0.937500
|
||||||
|
vt 0.437500 0.937500
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.406250 0.937500
|
||||||
|
vt 0.406250 0.562500
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.937500
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 0.062500
|
||||||
|
vt 0.031250 0.500000
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.093750 0.500000
|
||||||
|
vt 0.093750 0.062500
|
||||||
|
vt 0.062500 0.500000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.093750 0.562500
|
||||||
|
vt 0.062500 0.562500
|
||||||
|
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
|
||||||
|
vn 0.000000 -1.000000 0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||||
|
f 7/8/3 8/7/3 6/9/3 5/10/3
|
||||||
|
f 5/10/4 6/9/4 2/2/4 1/1/4
|
||||||
|
f 3/11/5 7/12/5 5/13/5 1/9/5
|
||||||
|
f 8/11/6 4/14/6 2/2/6 6/9/6
|
||||||
|
f 9/15/1 10/16/1 12/17/1 11/18/1
|
||||||
|
f 11/19/2 12/20/2 16/21/2 15/22/2
|
||||||
|
f 15/22/3 16/21/3 14/23/3 13/24/3
|
||||||
|
f 13/24/4 14/23/4 10/16/4 9/15/4
|
||||||
|
f 11/23/5 15/21/5 13/25/5 9/26/5
|
||||||
|
f 16/16/6 12/23/6 10/26/6 14/1/6
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Blender v2.76 (sub 0) OBJ File: '1sign67.5.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib 1sign67.5.mtl
|
||||||
|
o wood_Cube.001
|
||||||
|
v 0.212242 0.038277 0.411853
|
||||||
|
v 0.212242 0.500000 0.411853
|
||||||
|
v 0.141146 0.038277 0.441302
|
||||||
|
v 0.141146 0.500000 0.441302
|
||||||
|
v -0.141146 0.038277 -0.441302
|
||||||
|
v -0.141146 0.500000 -0.441302
|
||||||
|
v -0.212242 0.038277 -0.411853
|
||||||
|
v -0.212242 0.500000 -0.411853
|
||||||
|
v 0.050273 -0.499999 0.020824
|
||||||
|
v 0.050273 0.038679 0.020824
|
||||||
|
v -0.020824 -0.499999 0.050273
|
||||||
|
v -0.020824 0.038679 0.050273
|
||||||
|
v 0.020824 -0.499999 -0.050273
|
||||||
|
v 0.020824 0.038679 -0.050273
|
||||||
|
v -0.050273 -0.499999 -0.020824
|
||||||
|
v -0.050273 0.038679 -0.020824
|
||||||
|
vt 0.031250 0.562500
|
||||||
|
vt 0.031250 0.937500
|
||||||
|
vt 0.000000 0.937500
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.812500 0.562500
|
||||||
|
vt 0.812500 0.937500
|
||||||
|
vt 0.437500 0.937500
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.406250 0.937500
|
||||||
|
vt 0.406250 0.562500
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.937500
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vt 0.031250 0.062500
|
||||||
|
vt 0.031250 0.500000
|
||||||
|
vt 0.000000 0.500000
|
||||||
|
vt 0.000000 0.062500
|
||||||
|
vt 0.125000 0.062500
|
||||||
|
vt 0.125000 0.500000
|
||||||
|
vt 0.093750 0.500000
|
||||||
|
vt 0.093750 0.062500
|
||||||
|
vt 0.062500 0.500000
|
||||||
|
vt 0.062500 0.062500
|
||||||
|
vt 0.093750 0.562500
|
||||||
|
vt 0.062500 0.562500
|
||||||
|
vn 0.382700 0.000000 0.923900
|
||||||
|
vn -0.923900 0.000000 0.382700
|
||||||
|
vn -0.382700 0.000000 -0.923900
|
||||||
|
vn 0.923900 0.000000 -0.382700
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn 0.000000 1.000000 0.000000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||||
|
f 7/8/3 8/7/3 6/9/3 5/10/3
|
||||||
|
f 5/10/4 6/9/4 2/2/4 1/1/4
|
||||||
|
f 3/11/5 7/12/5 5/13/5 1/9/5
|
||||||
|
f 8/11/6 4/14/6 2/2/6 6/9/6
|
||||||
|
f 9/15/1 10/16/1 12/17/1 11/18/1
|
||||||
|
f 11/19/2 12/20/2 16/21/2 15/22/2
|
||||||
|
f 15/22/3 16/21/3 14/23/3 13/24/3
|
||||||
|
f 13/24/4 14/23/4 10/16/4 9/15/4
|
||||||
|
f 11/23/5 15/21/5 13/25/5 9/26/5
|
||||||
|
f 16/16/6 12/23/6 10/26/6 14/1/6
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Blender v2.76 (sub 0) OBJ File: 'signonwallmount.blend'
|
||||||
|
# www.blender.org
|
||||||
|
mtllib signonwallmount.mtl
|
||||||
|
o wood_Cube.001
|
||||||
|
v 0.499985 -0.416668 -0.249992
|
||||||
|
v 0.499985 -0.416668 0.249993
|
||||||
|
v 0.499985 -0.499999 -0.249992
|
||||||
|
v 0.499985 -0.499999 0.249993
|
||||||
|
v -0.499985 -0.416668 -0.249993
|
||||||
|
v -0.499985 -0.416668 0.249992
|
||||||
|
v -0.499985 -0.499999 -0.249993
|
||||||
|
v -0.499985 -0.499999 0.249992
|
||||||
|
vt 0.031250 0.562500
|
||||||
|
vt 0.031250 0.937500
|
||||||
|
vt 0.000000 0.937500
|
||||||
|
vt 0.000000 0.562500
|
||||||
|
vt 0.812500 0.562500
|
||||||
|
vt 0.812500 0.937500
|
||||||
|
vt 0.437500 0.937500
|
||||||
|
vt 0.437500 0.562500
|
||||||
|
vt 0.406250 0.937500
|
||||||
|
vt 0.406250 0.562500
|
||||||
|
vt 0.406250 1.000000
|
||||||
|
vt 0.781250 1.000000
|
||||||
|
vt 0.781250 0.937500
|
||||||
|
vt 0.031250 1.000000
|
||||||
|
vn 1.000000 0.000000 0.000000
|
||||||
|
vn 0.000000 -1.000000 -0.000000
|
||||||
|
vn -1.000000 0.000000 -0.000000
|
||||||
|
vn -0.000000 1.000000 0.000000
|
||||||
|
vn 0.000000 0.000000 -1.000000
|
||||||
|
vn -0.000000 -0.000000 1.000000
|
||||||
|
usemtl None
|
||||||
|
s off
|
||||||
|
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||||
|
f 3/5/2 4/6/2 8/7/2 7/8/2
|
||||||
|
f 7/8/3 8/7/3 6/9/3 5/10/3
|
||||||
|
f 5/10/4 6/9/4 2/2/4 1/1/4
|
||||||
|
f 3/11/5 7/12/5 5/13/5 1/9/5
|
||||||
|
f 8/11/6 4/14/6 2/2/6 6/9/6
|
After Width: | Height: | Size: 571 B |
Before Width: | Height: | Size: 219 B |
Before Width: | Height: | Size: 143 B |
Before Width: | Height: | Size: 219 B |
Before Width: | Height: | Size: 158 B |
Before Width: | Height: | Size: 124 B |
Before Width: | Height: | Size: 256 B |