Added new textures of wood, added API for creating shelves with smoothly opening drawers/doors

master
Andrey2470T 2022-07-06 00:44:49 +03:00
parent 7ccb717176
commit 3422c93c08
20 changed files with 559 additions and 207 deletions

View File

@ -174,7 +174,7 @@ function register.register_furniture_unit(name, def, craft_def)
end end
end end
f_def.add_properties = def.add_properties f_def.add_properties = def.add_properties
local f_name = def.style .. ":" .. name local f_name = ":multidecor:" .. name
minetest.register_node(f_name, f_def) minetest.register_node(f_name, f_def)
if craft_def then if craft_def then

View File

@ -1,3 +1,254 @@
--[[
'shelves_data' is table containing:
{
type = "drawer",
pos = <position> (relative),
object = <object_name>,
inventory = <formspec_string>,
length = <number>
}
or
{
type = "door",
pos = <position> (relative),
object = <object_name>,
inventory = <formspec_string>,
side = "left"/"right"
}
]]
shelves = {}
-- Temporary saving objects of current "open" shelves in the following format: ["playername"] = objref
local open_shelves = {}
-- Rotates the shelf 'obj' around 'pos' position of the node
function shelves.rotate_shelf(pos, obj, is_drawer, move_dist)
if not obj:get_luaentity() then
return
end
local dir = shelves.get_dir(pos)
local rot_y = vector.dir_to_rotation(dir).y
local rel_obj_pos = vector.subtract(obj:get_pos(), pos)
rel_obj_pos = vector.rotate_around_axis(rel_obj_pos, {x=0, y=1, z=0}, rot_y)
obj:set_pos(vector.add(pos, rel_obj_pos))
local rot = obj:get_rotation()
obj:set_rotation({x=rot.x, y=rot_y, z=rot.z})
local self = obj:get_luaentity()
if is_drawer then
self.start_v = vector.add(pos, rel_obj_pos)
self.end_v = vector.add(pos, vector.add(rel_obj_pos, vector.multiply(dir, move_dist)))
else
self.start_v = rot_y
self.end_v = rot_y+move_dist
end
end
-- Returns a direction of the node with 'pos' position
function shelves.get_dir(pos)
local node = minetest.get_node(pos)
local def = minetest.registered_nodes[node.name]
local dir = def.paramtype2 == "facedir" and vector.copy(minetest.facedir_to_dir(node.param2)) or
def.paramtype2 == "wallmounted" and vector.copy(minetest.wallmounted_to_dir(node.param2))
dir = dir*-1
return dir
end
-- Animates opening or closing the shelf 'obj'. The action directly depends on 'dir_sign' value ('1' is open, '-1' is close)
function shelves.open_shelf(obj, dir_sign)
local self = obj:get_luaentity()
if not self then
return
end
if not self.connected_to then
return
end
local node_name = self.connected_to.name
local shelf_i
for i, data in ipairs(minetest.registered_nodes[node_name].add_properties.shelves_data) do
if self.name == data.object then
shelf_i = i
end
end
local shelf = minetest.registered_nodes[node_name].add_properties.shelves_data[shelf_i]
local dir = shelves.get_dir(self.connected_to.pos)
self.dir = dir_sign
if shelf.type == "drawer" then
-- Will pull out the drawer at the distance equal to 2/3 its length
obj:set_velocity(vector.multiply(dir*dir_sign, 0.4))
end
end
-- Adds shelf objects for the node with 'pos' position. They should save formspec inventory and position of the node which they are connected to
function shelves.set_shelves(pos)
local node = minetest.get_node(pos)
local def = minetest.registered_nodes[node.name]
if not def.add_properties or not def.add_properties.shelves_data then
return
end
local dir = def.paramtype2 == "facedir" and minetest.facedir_to_dir(node.param2) or
def.paramtype2 == "wallmounted" and minetest.wallmounted_to_dir(node.param2)
local rot_y = vector.dir_to_rotation(dir)
for i, shelf_data in ipairs(def.add_properties.shelves_data) do
local obj = minetest.add_entity(vector.add(pos, shelf_data.pos), shelf_data.object, minetest.serialize({shelf_data.inventory, {name=node.name, pos=pos}, 0}))
local move_dist
if shelf_data.type == "drawer" then
move_dist = 2/3*shelf_data.length
else
move_dist = shelf_data.side == "left" and -math.pi/2 or math.pi/2
end
shelves.rotate_shelf(pos, obj, shelf_data.type == "drawer", move_dist)
local inv_name = node.name:gsub(":", "_") .. "_" .. i .. "_inv"
minetest.debug(inv_name)
minetest.create_detached_inventory(inv_name, {
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
return count
end,
allow_put = function(inv, listname, index, stack, player)
return stack:get_count()
end,
allow_take = function(inv, listname, index, stack, player)
return stack:get_count()
end
})
local inv = minetest.get_inventory({type="detached", name=inv_name})
local list_name = node.name:gsub(node.name:sub(1, node.name:find(":")), "") .. "_" .. shelf_data.type
inv:set_list(list_name, {})
inv:set_size(list_name, shelf_data.inv_size.w*shelf_data.inv_size.h)
inv:set_width(list_name, shelf_data.inv_size.w)
end
end
shelves.default_on_activate = function(self, staticdata)
if staticdata ~= "" then
local data = minetest.deserialize(staticdata)
self.inv = data[1]
self.connected_to = data[2]
self.dir = data[3]
self.start_v = data[4]
self.end_v = data[5]
end
end
shelves.default_get_staticdata = function(self)
return minetest.serialize({self.inv, self.connected_to, self.dir, self.start_v, self.end_v})
end
shelves.default_on_rightclick = function(self, clicker)
local def = minetest.registered_nodes[self.connected_to.name]
local shelf_i
for i, data in ipairs(def.add_properties.shelves_data) do
if self.name == data.object then
shelf_i = i
break
end
end
open_shelves[clicker:get_player_name()] = self.object
minetest.show_formspec(clicker:get_player_name(), self.connected_to.name .. "_" .. shelf_i .. "_fs", self.inv)
if self.dir == 0 then
shelves.open_shelf(self.object, 1)
end
end
shelves.default_drawer_on_step = function(self)
local node = minetest.get_node(self.connected_to.pos)
if node.name ~= self.connected_to.name then
self.object:remove()
return
end
if self.dir == 0 then
return
end
local target_pos = self.dir == 1 and self.end_v or self.start_v
local dist = vector.distance(self.object:get_pos(), target_pos)
if dist <= 0.1 then
self.dir = 0
self.object:set_velocity(vector.zero())
self.object:set_pos(target_pos)
end
end
shelves.default_door_on_step = function(self, dtime)
local node = minetest.get_node(self.connected_to.pos)
if node.name ~= self.connected_to.name then
self.object:remove()
return
end
if self.dir == 0 then
return
end
local rot = self.object:get_rotation()
local target_rot = self.dir == 1 and self.end_v or self.start_v
if math.abs(target_rot-rot.y) <= math.rad(10) then
self.dir = 0
self.object:set_rotation({x=rot.x, y=target_rot, z=rot.z})
return
end
-- Rotation speed is 45 degrees/sec
self.object:set_rotation({x=rot.x, y=rot.y+(-self.dir)*math.pi/3*dtime, z=rot.z})
end
shelves.default_on_receive_fields = function(player, formname, fields)
local is_table_inv = formname:find("%d+", -10)
if not is_table_inv then
return
end
local name = formname:sub(1, is_table_inv-2)
local def = minetest.registered_nodes[name]
if not def then
return
end
local is_table = false
for n, val in pairs(def.groups) do
if n == "table" then
is_table = true
break
end
end
if not name:sub(1, name:find(":")-1) == "multidecor" or not is_table then
return
end
local shelf = open_shelves[player:get_player_name()]
if fields.quit == "true" and shelf then
open_shelves[player:get_player_name()] = nil
shelves.open_shelf(shelf, -1)
end
end
function register.register_table(name, base_def, add_def, craft_def) function register.register_table(name, base_def, add_def, craft_def)
local c_def = table.copy(base_def) local c_def = table.copy(base_def)
@ -5,5 +256,12 @@ function register.register_table(name, base_def, add_def, craft_def)
c_def.add_properties = add_def c_def.add_properties = add_def
--[[if c_def.callbacks then
c_def.callbacks.on_construct = c_def.callbacks.on_construct or default_on_construct
else
c_def.callbacks = {on_construct = default_on_construct}
end]]
register.register_furniture_unit(name, c_def, craft_def) register.register_furniture_unit(name, c_def, craft_def)
end end
minetest.register_on_player_receive_fields(shelves.default_on_receive_fields)

View File

@ -3,7 +3,7 @@ register.register_seat("kitchen_modern_wooden_chair", {
material = "wood", material = "wood",
description = "Kitchen Modern Wooden Chair", description = "Kitchen Modern Wooden Chair",
mesh = "multidecor_kitchen_modern_wooden_chair.b3d", mesh = "multidecor_kitchen_modern_wooden_chair.b3d",
tiles = {"multidecor_wood.jpg"}, tiles = {"multidecor_wood.png"},
bounding_boxes = { bounding_boxes = {
{-0.36, -0.5, -0.36, 0.36, 0.3, 0.26}, {-0.36, -0.5, -0.36, 0.36, 0.3, 0.26},
{-0.36, -0.5, 0.26, 0.36, 1.3, 0.36} {-0.36, -0.5, 0.26, 0.36, 1.3, 0.36}
@ -27,7 +27,7 @@ register.register_seat("soft_kitchen_modern_wooden_chair", {
material = "wood", material = "wood",
description = "Soft Kitchen Modern Wooden Chair", description = "Soft Kitchen Modern Wooden Chair",
mesh = "multidecor_soft_kitchen_modern_wooden_chair.b3d", mesh = "multidecor_soft_kitchen_modern_wooden_chair.b3d",
tiles = {"multidecor_wood.jpg", "multidecor_wool_material.png"}, tiles = {"multidecor_wood.png", "multidecor_wool_material.png"},
bounding_boxes = { bounding_boxes = {
{-0.36, -0.5, -0.36, 0.36, 0.35, 0.26}, {-0.36, -0.5, -0.36, 0.36, 0.35, 0.26},
{-0.36, -0.5, 0.26, 0.36, 1.3, 0.36} {-0.36, -0.5, 0.26, 0.36, 1.3, 0.36}
@ -122,7 +122,7 @@ register.register_table("kitchen_modern_wooden_table", {
material = "wood", material = "wood",
description = "Kitchen Modern Wooden Table", description = "Kitchen Modern Wooden Table",
mesh = "multidecor_kitchen_modern_wooden_table.obj", mesh = "multidecor_kitchen_modern_wooden_table.obj",
tiles = {"multidecor_wood.jpg"}, tiles = {"multidecor_wood.png"},
bounding_boxes = { bounding_boxes = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
} }
@ -144,7 +144,7 @@ register.register_table("round_modern_wooden_table", {
material = "wood", material = "wood",
description = "Round Modern Wooden Table", description = "Round Modern Wooden Table",
mesh = "multidecor_round_wooden_table.obj", mesh = "multidecor_round_wooden_table.obj",
tiles = {"multidecor_jungle_wood.jpg"}, tiles = {"multidecor_jungle_wood.png"},
bounding_boxes = { bounding_boxes = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
} }
@ -155,10 +155,69 @@ register.register_table("modern_wooden_desk", {
material = "wood", material = "wood",
description = "Modern Wooden Desk", description = "Modern Wooden Desk",
mesh = "multidecor_wooden_desk.obj", mesh = "multidecor_wooden_desk.obj",
tiles = {"multidecor_jungle_wood.jpg"}, tiles = {"multidecor_jungle_wood.png"},
bounding_boxes = { bounding_boxes = {
{-0.5, -0.5, -0.5, 1.0, 0.5, 0.5} {-0.5, -0.5, -0.5, 1.5, 0.5, 0.5}
},
callbacks = {
on_construct = function(pos)
shelves.set_shelves(pos)
end
} }
},
{
shelves_data = {
{
type = "drawer",
pos = {x=-1.15, y=0.225, z=0.05},
object = "modern:wooden_desk_drawer",
length = 0.8,
inventory = [[
formspec_version[5]size[8,3]
list[detached:multidecor_modern_wooden_desk_1_inv;modern_wooden_desk_drawer;0.5,1;6,1;]
]],
inv_size = {w=1,h=6}
},
{
type = "door",
pos = {x=-0.825, y=-0.15, z=0.45},
object = "modern:wooden_desk_door",
side = "left",
inventory = [[
formspec_version[5]size[8,5]
list[detached:multidecor_modern_wooden_desk_2_inv;modern_wooden_desk_door;0.5,1;6,3;]
]],
inv_size = {w=3,h=6}
}
}
})
minetest.register_entity("modern:wooden_desk_drawer", {
visual = "mesh",
visual_size = {x=5, y=5, z=5},
mesh = "multidecor_wooden_desk_drawer.obj",
textures = {"multidecor_wooden_desk2.png"},
physical = false,
selection_box = {-0.2, -0.15, -0.25, 0.2, 0.15, 0.25},
static_save = true,
on_activate = shelves.default_on_activate,
on_rightclick = shelves.default_on_rightclick,
on_step = shelves.default_drawer_on_step,
get_staticdata = shelves.default_get_staticdata
})
minetest.register_entity("modern:wooden_desk_door", {
visual = "mesh",
visual_size = {x=5, y=5, z=5},
mesh = "multidecor_wooden_desk_door.obj",
textures = {"multidecor_wooden_desk2.png"},
physical = false,
selection_box = {-0.2, -0.2, -0.25, 0.2, 0.2, 0.25},
static_save = true,
on_activate = shelves.default_on_activate,
on_rightclick = shelves.default_on_rightclick,
on_step = shelves.default_door_on_step,
get_staticdata = shelves.default_get_staticdata
}) })
register.register_table("modern_wooden_table_with_metallic_legs", { register.register_table("modern_wooden_table_with_metallic_legs", {
@ -171,3 +230,38 @@ register.register_table("modern_wooden_table_with_metallic_legs", {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}
} }
}) })
for _, wood_n in ipairs({"", "jungle", "pine", "birch"}) do
local tex = "multidecor_" .. wood_n .. (wood_n ~= "" and "_" or "") .. "wood.png^[sheet:2x2:0,0"
register.register_table("modern_wooden_" .. wood_n .. (wood_n ~= "" and "_" or "") .. "closed_shelf", {
style = "modern",
material = "wood",
drawtype = "nodebox",
visual_scale = 1,
description = "Modern Wooden " .. wood_n:sub(1, 1):upper() .. wood_n:sub(2) .. " Closed Shelf (without back)",
tiles = {tex, tex, tex, tex, tex, tex},
bounding_boxes = {
{-0.5, -0.4, -0.5, -0.4, 0.4, 0.5}, -- Left side
{0.4, -0.4, -0.5, 0.5, 0.4, 0.5}, -- Right side
{-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}, -- Bottom side
{-0.5, 0.4, -0.5, 0.5, 0.5, 0.5} -- Top side
}
})
register.register_table("modern_wooden_" .. wood_n .. (wood_n ~= "" and "_" or "") .. "closed_shelf_with_back", {
style = "modern",
material = "wood",
drawtype = "nodebox",
visual_scale = 1,
description = "Modern Wooden " .. wood_n:sub(1, 1):upper() .. wood_n:sub(2) .. " Closed Shelf (with back)",
tiles = {tex, tex, tex, tex, tex, tex},
bounding_boxes = {
{-0.5, -0.4, -0.5, -0.4, 0.4, 0.5}, -- Left side
{0.4, -0.4, -0.5, 0.5, 0.4, 0.5}, -- Right side
{-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}, -- Bottom side
{-0.5, 0.4, -0.5, 0.5, 0.5, 0.5}, -- Top side
{-0.4, -0.4, 0.4, 0.4, 0.4, 0.5} -- Back side
}
})
end

View File

@ -1,46 +1,46 @@
# Blender v3.0.0 OBJ File: 'multidecor_wooden_desk_door.blend' # Blender v3.0.0 OBJ File: 'multidecor_wooden_desk_door.blend'
# www.blender.org # www.blender.org
o Cube.002_Cube.001 o Cube.002_Cube.001
v -0.052356 0.501493 -0.642826 v 1.300000 0.500000 -0.050000
v -0.052356 0.501493 0.657173 v 0.000000 0.500000 -0.050000
v -0.052356 -0.498507 -0.642826 v 1.300000 -0.500000 -0.050000
v -0.052356 -0.498507 0.657173 v 0.000000 -0.500000 -0.050000
v 0.047644 0.501493 -0.642826 v 1.300000 0.500000 0.050000
v 0.047644 -0.498507 -0.642826 v 1.300000 -0.500000 0.050000
v 0.047644 0.501493 0.657173 v -0.000000 0.500000 0.050000
v 0.047644 -0.498507 0.657173 v -0.000000 -0.500000 0.050000
v 0.047644 -0.190007 -0.506924 v 1.164098 -0.191500 0.050000
v 0.047644 -0.190007 -0.416924 v 1.074098 -0.191500 0.050000
v 0.047644 -0.165007 -0.506924 v 1.164098 -0.166500 0.050000
v 0.047644 -0.165007 -0.416924 v 1.074098 -0.166500 0.050000
v 0.122644 -0.190007 -0.506924 v 1.164098 -0.191500 0.125000
v 0.122644 -0.190007 -0.416924 v 1.074098 -0.191500 0.125000
v 0.122644 -0.165007 -0.506924 v 1.164098 -0.166500 0.125000
v 0.122644 -0.165007 -0.416924 v 1.074098 -0.166500 0.125000
v 0.047644 0.309993 -0.506924 v 1.164098 0.308500 0.050000
v 0.047644 0.309993 -0.416924 v 1.074098 0.308500 0.050000
v 0.047644 0.284993 -0.506924 v 1.164098 0.283500 0.050000
v 0.047644 0.284993 -0.416924 v 1.074098 0.283500 0.050000
v 0.122644 0.309993 -0.506924 v 1.164098 0.308500 0.125000
v 0.122644 0.309993 -0.416924 v 1.074098 0.308500 0.125000
v 0.122644 0.284993 -0.506924 v 1.164098 0.283500 0.125000
v 0.122644 0.284993 -0.416924 v 1.074098 0.283500 0.125000
v 0.122644 -0.215007 -0.520424 v 1.177598 -0.216500 0.125000
v 0.122644 -0.215007 -0.403424 v 1.060598 -0.216500 0.125000
v 0.122644 -0.165007 -0.520424 v 1.177598 -0.166500 0.125000
v 0.122644 -0.165007 -0.403424 v 1.060598 -0.166500 0.125000
v 0.122644 0.334993 -0.520424 v 1.177598 0.333500 0.125000
v 0.122644 0.334993 -0.403424 v 1.060598 0.333500 0.125000
v 0.122644 0.284993 -0.520424 v 1.177598 0.283500 0.125000
v 0.122644 0.284993 -0.403424 v 1.060598 0.283500 0.125000
v 0.172644 -0.215007 -0.520424 v 1.177598 -0.216500 0.175000
v 0.172644 -0.215007 -0.403424 v 1.060598 -0.216500 0.175000
v 0.172644 -0.165007 -0.520424 v 1.177598 -0.166500 0.175000
v 0.172644 -0.165007 -0.403424 v 1.060598 -0.166500 0.175000
v 0.172644 0.334993 -0.520424 v 1.177598 0.333500 0.175000
v 0.172644 0.334993 -0.403424 v 1.060598 0.333500 0.175000
v 0.172644 0.284993 -0.520424 v 1.177598 0.283500 0.175000
v 0.172644 0.284993 -0.403424 v 1.060598 0.283500 0.175000
vt 1.004234 0.963160 vt 1.004234 0.963160
vt 1.004234 0.599610 vt 1.004234 0.599610
vt 0.967879 0.599610 vt 0.967879 0.599610
@ -79,23 +79,23 @@ vt 0.102184 0.263981
vt 0.102185 0.047140 vt 0.102185 0.047140
vt 0.152058 0.047140 vt 0.152058 0.047140
vt 0.152057 0.263981 vt 0.152057 0.263981
vt 0.145552 0.276028
vt 0.152057 0.288075 vt 0.152057 0.288075
vt 0.145552 0.276028
vt 0.145553 0.035094 vt 0.145553 0.035094
vt 0.102185 0.035094 vt 0.102185 0.035094
vt 0.095680 0.023047 vt 0.095680 0.023047
vt 0.152058 0.023047 vt 0.152058 0.023047
vt 0.095680 0.047140 vt 0.095680 0.047140
vt 0.095678 0.263981 vt 0.095678 0.263981
vt 0.102184 0.276028
vt 0.095678 0.288075 vt 0.095678 0.288075
vt 0.102184 0.276028
vt 0.176151 0.312168 vt 0.176151 0.312168
vt 0.232530 0.312168
vt 0.232530 0.288075
vt 0.176151 0.288075 vt 0.176151 0.288075
vt 0.232530 0.288075
vt 0.232530 0.312168
vt 0.256623 0.288075 vt 0.256623 0.288075
vt 0.256623 0.263981
vt 0.232530 0.263981 vt 0.232530 0.263981
vt 0.256623 0.263981
vt 0.176151 0.023047 vt 0.176151 0.023047
vt 0.176151 0.047140 vt 0.176151 0.047140
vt 0.176151 0.263981 vt 0.176151 0.263981
@ -109,12 +109,12 @@ vt 0.967879 0.563254
vt 0.495263 0.563254 vt 0.495263 0.563254
vt 0.967880 0.199703 vt 0.967880 0.199703
vt 0.495264 0.199703 vt 0.495264 0.199703
vn 0.0000 0.0000 -1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000 vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn -1.0000 0.0000 -0.0000
vn 0.0000 1.0000 0.0000
vn -0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
s off s off
f 3/1/1 1/2/1 5/3/1 6/4/1 f 3/1/1 1/2/1 5/3/1 6/4/1
f 4/5/2 3/6/2 6/4/2 8/7/2 f 4/5/2 3/6/2 6/4/2 8/7/2
@ -129,24 +129,24 @@ f 19/23/3 23/26/3 21/31/3 17/32/3
f 24/25/1 20/24/1 18/29/1 22/28/1 f 24/25/1 20/24/1 18/29/1 22/28/1
f 16/33/5 24/34/5 23/35/5 15/36/5 f 16/33/5 24/34/5 23/35/5 15/36/5
f 24/34/5 16/33/5 28/37/5 32/38/5 f 24/34/5 16/33/5 28/37/5 32/38/5
f 24/34/6 22/39/6 30/40/6 32/38/6 f 24/34/5 32/38/5 30/39/5 22/40/5
f 14/41/5 13/42/5 25/43/5 26/44/5 f 14/41/5 13/42/5 25/43/5 26/44/5
f 13/42/5 15/36/5 27/45/5 25/43/5 f 13/42/5 15/36/5 27/45/5 25/43/5
f 15/36/5 23/35/5 31/46/5 27/45/5 f 15/36/5 23/35/5 31/46/5 27/45/5
f 22/39/6 21/47/6 29/48/6 30/40/6 f 22/40/5 30/39/5 29/47/5 21/48/5
f 16/33/5 14/41/5 26/44/5 28/37/5 f 16/33/5 14/41/5 26/44/5 28/37/5
f 21/47/6 23/35/6 31/46/6 29/48/6 f 21/48/5 29/47/5 31/46/5 23/35/5
f 30/49/2 29/50/2 37/51/2 38/52/2 f 30/49/4 38/50/4 37/51/4 29/52/4
f 29/53/3 31/54/3 39/55/3 37/51/3 f 29/53/1 37/51/1 39/54/1 31/55/1
f 28/37/3 26/44/3 34/56/3 36/57/3 f 28/37/3 26/44/3 34/56/3 36/57/3
f 32/38/3 28/37/3 36/57/3 40/58/3 f 32/38/3 28/37/3 36/57/3 40/58/3
f 32/38/1 30/40/1 38/52/1 40/58/1 f 32/38/3 40/58/3 38/50/3 30/39/3
f 26/59/2 25/60/2 33/61/2 34/56/2 f 26/59/2 25/60/2 33/61/2 34/56/2
f 25/62/1 27/63/1 35/64/1 33/61/1 f 25/62/1 27/63/1 35/64/1 33/61/1
f 27/63/1 31/54/1 39/55/1 35/64/1 f 27/63/1 31/55/1 39/54/1 35/64/1
f 35/64/6 39/55/6 40/58/6 36/57/6 f 35/64/6 39/54/6 40/58/6 36/57/6
f 36/57/6 34/56/6 33/61/6 35/64/6 f 36/57/6 34/56/6 33/61/6 35/64/6
f 40/58/6 39/55/6 37/51/6 38/52/6 f 40/58/6 39/54/6 37/51/6 38/50/6
f 5/3/4 1/65/4 2/66/4 7/10/4 f 5/3/4 1/65/4 2/66/4 7/10/4
f 3/67/5 4/68/5 2/66/5 1/65/5 f 3/67/5 4/68/5 2/66/5 1/65/5
f 6/4/6 5/3/6 7/10/6 8/7/6 f 6/4/6 5/3/6 7/10/6 8/7/6

View File

@ -1,74 +1,74 @@
# Blender v3.0.0 OBJ File: 'multidecor_wooden_desk_drawer.blend' # Blender v3.0.0 OBJ File: 'multidecor_wooden_desk_drawer.blend'
# www.blender.org # www.blender.org
o Cube.001_Cube.005 o Cube.001_Cube.005
v -1.572414 0.192260 0.549999 v -0.550000 0.261510 -0.940533
v -1.572414 0.192260 -0.550001 v 0.550000 0.261510 -0.940533
v 0.127586 0.192260 0.549999 v -0.550000 0.261510 0.759467
v 0.127586 0.192260 -0.550001 v 0.550000 0.261510 0.759467
v -1.572414 -0.207740 0.549999 v -0.550000 -0.138490 -0.940533
v -1.572414 -0.207740 -0.550001 v 0.550000 -0.138490 -0.940533
v 0.127586 -0.207740 0.549999 v -0.550000 -0.138490 0.759467
v 0.127586 -0.207740 -0.550001 v 0.550000 -0.138490 0.759467
v -1.522414 0.192260 0.499999 v -0.500000 0.261510 -0.890533
v -1.522414 0.192260 -0.500001 v 0.500000 0.261510 -0.890533
v 0.127586 0.192260 0.499999 v -0.500000 0.261510 0.759467
v -1.522414 -0.157740 0.499999 v -0.500000 -0.088490 -0.890533
v -1.522414 -0.157740 -0.500001 v 0.500000 -0.088490 -0.890533
v 0.127586 -0.157740 0.499999 v -0.500000 -0.088490 0.759467
v 0.127586 -0.157740 -0.500001 v 0.500000 -0.088490 0.759467
v 0.127586 0.192260 0.649999 v -0.650000 0.261510 0.759467
v 0.127586 -0.207740 0.649999 v -0.650000 -0.138490 0.759467
v 0.127586 0.192260 -0.650001 v 0.650000 0.261510 0.759467
v 0.127586 -0.207740 -0.650001 v 0.650000 -0.138490 0.759467
v 0.227586 -0.207740 0.549999 v -0.550000 -0.138490 0.859467
v 0.227586 -0.207740 -0.550001 v 0.550000 -0.138490 0.859467
v 0.227586 0.192260 0.649999 v -0.650000 0.261510 0.859467
v 0.227586 -0.207740 0.649999 v -0.650000 -0.138490 0.859467
v 0.227586 0.192260 -0.650001 v 0.650000 0.261510 0.859467
v 0.227586 -0.207740 -0.650001 v 0.650000 -0.138490 0.859467
v 0.127586 0.192260 -0.500001 v 0.500000 0.261510 0.759467
v 0.227586 -0.032462 0.249999 v -0.250000 0.036789 0.859467
v 0.227586 0.057538 0.249999 v -0.250000 0.126789 0.859467
v 0.227586 -0.032462 0.224999 v -0.225000 0.036789 0.859467
v 0.227586 0.057538 0.224999 v -0.225000 0.126789 0.859467
v 0.302586 -0.032462 0.249999 v -0.250000 0.036789 0.934467
v 0.302586 0.057538 0.249999 v -0.250000 0.126789 0.934467
v 0.302586 -0.032462 0.224999 v -0.225000 0.036789 0.934467
v 0.302586 0.057538 0.224999 v -0.225000 0.126789 0.934467
v 0.227586 -0.032462 -0.250001 v 0.250000 0.036789 0.859467
v 0.227586 0.057538 -0.250001 v 0.250000 0.126789 0.859467
v 0.227586 -0.032462 -0.225001 v 0.225000 0.036789 0.859467
v 0.227586 0.057538 -0.225001 v 0.225000 0.126789 0.859467
v 0.302586 -0.032462 -0.250001 v 0.250000 0.036789 0.934467
v 0.302586 0.057538 -0.250001 v 0.250000 0.126789 0.934467
v 0.302586 -0.032462 -0.225001 v 0.225000 0.036789 0.934467
v 0.302586 0.057538 -0.225001 v 0.225000 0.126789 0.934467
v 0.302586 -0.045962 0.274999 v -0.275000 0.023289 0.934467
v 0.302586 0.071038 0.274999 v -0.275000 0.140289 0.934467
v 0.302586 -0.045962 0.224999 v -0.225000 0.023289 0.934467
v 0.302586 0.071038 0.224999 v -0.225000 0.140289 0.934467
v 0.302586 -0.045962 -0.275001 v 0.275000 0.023289 0.934467
v 0.302586 0.071038 -0.275001 v 0.275000 0.140289 0.934467
v 0.302586 -0.045962 -0.225001 v 0.225000 0.023289 0.934467
v 0.302586 0.071038 -0.225001 v 0.225000 0.140289 0.934467
v 0.352586 -0.045962 0.274999 v -0.275000 0.023289 0.984467
v 0.352586 0.071038 0.274999 v -0.275000 0.140289 0.984467
v 0.352586 -0.045962 0.224999 v -0.225000 0.023289 0.984467
v 0.352586 0.071038 0.224999 v -0.225000 0.140289 0.984467
v 0.352586 -0.045962 -0.275001 v 0.275000 0.023289 0.984467
v 0.352586 0.071038 -0.275001 v 0.275000 0.140289 0.984467
v 0.352586 -0.045962 -0.225001 v 0.225000 0.023289 0.984467
v 0.352586 0.071038 -0.225001 v 0.225000 0.140289 0.984467
vt 0.557219 0.492142 vt 0.557219 0.492142
vt 0.998511 0.492142
vt 0.998511 0.595975
vt 0.557219 0.595975 vt 0.557219 0.595975
vt 0.998511 0.595975
vt 0.998511 0.492142
vt 0.453386 0.881517 vt 0.453386 0.881517
vt 0.453386 0.595975
vt 0.557219 0.881517 vt 0.557219 0.881517
vt 0.453386 0.595975
vt 0.998511 0.985350 vt 0.998511 0.985350
vt 0.557219 0.985350
vt 0.998511 0.881517 vt 0.998511 0.881517
vt 0.557219 0.985350
vt 0.999849 0.091005 vt 0.999849 0.091005
vt 0.999849 0.519318 vt 0.999849 0.519318
vt 0.908995 0.519318 vt 0.908995 0.519318
@ -80,19 +80,19 @@ vt 0.558557 0.519318
vt 0.558557 0.091005 vt 0.558557 0.091005
vt 0.649411 0.519318 vt 0.649411 0.519318
vt 0.441443 0.619989 vt 0.441443 0.619989
vt 0.441443 0.723823
vt 0.415485 0.723823
vt 0.415485 0.619989 vt 0.415485 0.619989
vt 0.415485 0.723823
vt 0.441443 0.723823
vt 0.000151 0.723823 vt 0.000151 0.723823
vt 0.000151 0.619989
vt 0.026109 0.619989
vt 0.026109 0.723823 vt 0.026109 0.723823
vt 0.052067 0.619989 vt 0.026109 0.619989
vt 0.000151 0.619989
vt 0.052068 0.723823 vt 0.052068 0.723823
vt 0.052067 0.619989
vt 0.363568 0.594031 vt 0.363568 0.594031
vt 0.389526 0.594031
vt 0.389526 0.619989
vt 0.363568 0.619989 vt 0.363568 0.619989
vt 0.389526 0.619989
vt 0.389526 0.594031
vt 0.078026 0.594031 vt 0.078026 0.594031
vt 0.078026 0.619989 vt 0.078026 0.619989
vt 0.389526 0.723823 vt 0.389526 0.723823
@ -100,10 +100,10 @@ vt 0.052067 0.594031
vt 0.363568 0.749781 vt 0.363568 0.749781
vt 0.350588 0.749781 vt 0.350588 0.749781
vt 0.649411 0.610173 vt 0.649411 0.610173
vt 0.570199 0.479162
vt 0.998511 0.479161 vt 0.998511 0.479161
vt 0.440407 0.868538 vt 0.570199 0.479162
vt 0.440407 0.608954 vt 0.440407 0.608954
vt 0.440407 0.868538
vt 0.998511 0.998330 vt 0.998511 0.998330
vt 0.570198 0.998329 vt 0.570198 0.998329
vt 0.266463 0.167541 vt 0.266463 0.167541
@ -117,38 +117,38 @@ vt 0.266463 0.155714
vt 0.266463 0.221947 vt 0.266463 0.221947
vt 0.230981 0.221947 vt 0.230981 0.221947
vt 0.266463 0.058179 vt 0.266463 0.058179
vt 0.266463 0.100758
vt 0.230981 0.100758
vt 0.230981 0.058179 vt 0.230981 0.058179
vt 0.230981 0.100758
vt 0.266463 0.100758
vt 0.230981 0.046352 vt 0.230981 0.046352
vt 0.230981 0.003773
vt 0.266463 0.003773
vt 0.266463 0.046352 vt 0.266463 0.046352
vt 0.266463 0.112585 vt 0.266463 0.003773
vt 0.230981 0.003773
vt 0.230981 0.112585 vt 0.230981 0.112585
vt 0.266463 0.112585
vt 0.181465 0.263977 vt 0.181465 0.263977
vt 0.181465 0.051083 vt 0.181465 0.051083
vt 0.224044 0.051083 vt 0.224044 0.051083
vt 0.224044 0.263977 vt 0.224044 0.263977
vt 0.175078 0.263977 vt 0.175078 0.263977
vt 0.175078 0.051083 vt 0.175078 0.051083
vt 0.181465 0.039255
vt 0.175078 0.027428 vt 0.175078 0.027428
vt 0.181465 0.039255
vt 0.181465 0.275804 vt 0.181465 0.275804
vt 0.224044 0.275804 vt 0.224044 0.275804
vt 0.230431 0.287632 vt 0.230431 0.287632
vt 0.175078 0.287631 vt 0.175078 0.287631
vt 0.230431 0.263977 vt 0.230431 0.263977
vt 0.230431 0.051083 vt 0.230431 0.051083
vt 0.224044 0.039256
vt 0.230431 0.027428 vt 0.230431 0.027428
vt 0.224044 0.039256
vt 0.151423 0.003773 vt 0.151423 0.003773
vt 0.096071 0.003773
vt 0.096071 0.027428
vt 0.151423 0.027428 vt 0.151423 0.027428
vt 0.096071 0.027428
vt 0.096071 0.003773
vt 0.072416 0.027428 vt 0.072416 0.027428
vt 0.072416 0.051083
vt 0.096071 0.051083 vt 0.096071 0.051083
vt 0.072416 0.051083
vt 0.151423 0.287631 vt 0.151423 0.287631
vt 0.151423 0.263977 vt 0.151423 0.263977
vt 0.151423 0.051083 vt 0.151423 0.051083
@ -163,68 +163,68 @@ vt 0.078026 0.749781
vt 0.052068 0.749781 vt 0.052068 0.749781
vt 0.389526 0.749781 vt 0.389526 0.749781
vt 0.908995 0.610173 vt 0.908995 0.610173
vn -1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000 vn 1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 1.0000 vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000 vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
s off s off
f 1/1/1 3/2/1 7/3/1 5/4/1 f 1/1/1 5/2/1 7/3/1 3/4/1
f 2/5/2 1/6/2 5/4/2 6/7/2 f 2/5/2 6/6/2 5/2/2 1/7/2
f 4/8/3 2/9/3 6/7/3 8/10/3 f 4/8/3 8/9/3 6/6/3 2/10/3
f 6/7/4 5/4/4 7/3/4 8/10/4 f 6/6/4 8/9/4 7/3/4 5/2/4
f 9/11/1 11/12/1 14/13/1 12/14/1 f 9/11/3 11/12/3 14/13/3 12/14/3
f 10/15/2 9/16/2 12/14/2 13/17/2 f 10/15/5 9/16/5 12/14/5 13/17/5
f 26/18/3 10/19/3 13/17/3 15/20/3 f 26/18/1 10/19/1 13/17/1 15/20/1
f 13/17/4 12/14/4 14/13/4 15/20/4 f 13/17/6 12/14/6 14/13/6 15/20/6
f 7/21/2 3/22/2 16/23/2 17/24/2 f 7/21/2 17/22/2 16/23/2 3/24/2
f 4/25/2 8/26/2 19/27/2 18/28/2 f 4/25/2 18/26/2 19/27/2 8/28/2
f 18/28/3 19/27/3 25/29/3 24/30/3 f 18/26/3 24/29/3 25/30/3 19/27/3
f 7/31/4 17/32/4 23/33/4 20/34/4 f 7/31/4 20/32/4 23/33/4 17/34/4
f 8/35/4 7/31/4 20/34/4 21/36/4 f 8/35/4 21/36/4 20/32/4 7/31/4
f 17/24/1 16/23/1 22/37/1 23/33/1 f 17/22/1 23/33/1 22/37/1 16/23/1
f 19/38/4 8/35/4 21/36/4 25/29/4 f 19/38/4 25/30/4 21/36/4 8/35/4
f 24/30/5 21/36/5 20/34/5 f 24/29/5 20/32/5 21/36/5
f 3/39/6 11/40/6 22/37/6 f 3/39/6 22/37/6 11/40/6
f 14/13/5 26/41/5 15/20/5 f 14/13/2 26/41/2 15/20/2
f 3/2/6 1/1/6 9/42/6 11/43/6 f 3/4/6 11/42/6 9/43/6 1/1/6
f 2/5/6 10/44/6 9/45/6 1/6/6 f 2/5/6 1/7/6 9/44/6 10/45/6
f 26/46/6 10/47/6 2/9/6 4/8/6 f 26/46/6 4/8/6 2/10/6 10/47/6
f 29/48/1 30/49/1 34/50/1 33/51/1 f 29/48/3 30/49/3 34/50/3 33/51/3
f 31/52/3 32/53/3 28/54/3 27/55/3 f 31/52/1 32/53/1 28/54/1 27/55/1
f 29/48/6 33/51/6 31/52/6 27/55/6 f 29/48/4 33/51/4 31/52/4 27/55/4
f 34/50/4 30/49/4 28/56/4 32/57/4 f 34/50/6 30/49/6 28/56/6 32/57/6
f 37/58/1 38/59/1 42/60/1 41/61/1 f 37/58/1 41/59/1 42/60/1 38/61/1
f 39/62/3 40/63/3 36/64/3 35/65/3 f 39/62/3 35/63/3 36/64/3 40/65/3
f 37/58/4 41/61/4 39/62/4 35/65/4 f 37/58/4 35/63/4 39/62/4 41/59/4
f 42/60/6 38/59/6 36/66/6 40/67/6 f 42/60/6 40/66/6 36/67/6 38/61/6
f 34/68/5 42/69/5 41/70/5 33/71/5 f 34/68/2 42/69/2 41/70/2 33/71/2
f 42/69/5 34/68/5 46/72/5 50/73/5 f 42/69/2 34/68/2 46/72/2 50/73/2
f 42/69/2 40/74/2 48/75/2 50/73/2 f 42/69/2 50/73/2 48/74/2 40/75/2
f 32/76/5 31/77/5 43/78/5 44/79/5 f 32/76/2 31/77/2 43/78/2 44/79/2
f 31/77/5 33/71/5 45/80/5 43/78/5 f 31/77/2 33/71/2 45/80/2 43/78/2
f 33/71/5 41/70/5 49/81/5 45/80/5 f 33/71/2 41/70/2 49/81/2 45/80/2
f 40/74/2 39/82/2 47/83/2 48/75/2 f 40/75/2 48/74/2 47/82/2 39/83/2
f 34/68/5 32/76/5 44/79/5 46/72/5 f 34/68/2 32/76/2 44/79/2 46/72/2
f 39/82/2 41/70/2 49/81/2 47/83/2 f 39/83/2 47/82/2 49/81/2 41/70/2
f 48/84/3 47/85/3 55/86/3 56/87/3 f 48/84/3 56/85/3 55/86/3 47/87/3
f 47/88/4 49/89/4 57/90/4 55/86/4 f 47/88/4 55/86/4 57/89/4 49/90/4
f 46/72/4 44/79/4 52/91/4 54/92/4 f 46/72/6 44/79/6 52/91/6 54/92/6
f 50/73/4 46/72/4 54/92/4 58/93/4 f 50/73/6 46/72/6 54/92/6 58/93/6
f 50/73/6 48/75/6 56/87/6 58/93/6 f 50/73/6 58/93/6 56/85/6 48/74/6
f 44/94/3 43/95/3 51/96/3 52/91/3 f 44/94/1 43/95/1 51/96/1 52/91/1
f 43/97/6 45/98/6 53/99/6 51/96/6 f 43/97/4 45/98/4 53/99/4 51/96/4
f 45/98/6 49/89/6 57/90/6 53/99/6 f 45/98/4 49/90/4 57/89/4 53/99/4
f 53/99/2 57/90/2 58/93/2 54/92/2 f 53/99/5 57/89/5 58/93/5 54/92/5
f 11/40/6 26/100/6 24/30/6 f 11/40/6 24/29/6 26/100/6
f 54/92/2 52/91/2 51/96/2 53/99/2 f 54/92/5 52/91/5 51/96/5 53/99/5
f 58/93/2 57/90/2 55/86/2 56/87/2 f 58/93/5 57/89/5 55/86/5 56/85/5
f 26/100/6 4/101/6 24/30/6 f 26/100/6 24/29/6 4/101/6
f 4/101/6 18/102/6 24/30/6 f 4/101/6 24/29/6 18/102/6
f 24/30/6 22/37/6 11/40/6 f 24/29/6 11/40/6 22/37/6
f 22/37/6 16/103/6 3/39/6 f 22/37/6 3/39/6 16/103/6
f 23/33/5 22/37/5 20/34/5 f 23/33/5 20/32/5 22/37/5
f 22/37/5 24/30/5 20/34/5 f 22/37/5 20/32/5 24/29/5
f 24/30/5 25/29/5 21/36/5 f 24/29/5 21/36/5 25/30/5
f 14/13/5 11/104/5 26/41/5 f 14/13/2 11/104/2 26/41/2

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB