diff --git a/README.md b/README.md index 8695d9c..80e3d83 100644 --- a/README.md +++ b/README.md @@ -7,29 +7,39 @@ If you like my contributions you may consider reading http://entuland.com/en/sup WIP MOD forum thread: https://forum.minetest.net/viewtopic.php?f=9&t=20115 -# Recipe for the Canvas block +# Canvas recipes - wesh:canvas - W = any wool block - B = bronze ingot - + I = ingot + WWW - WBW + WIW WWW + + wesh:canvas02 (steel ingot) + wesh:canvas04 (copper ingot) + wesh:canvas08 (tin ingot) + wesh:canvas16 (bronze ingot) - wesh:canvas gives you wesh:canvas16, kept for compatibility + wesh:canvas32 (gold ingot) ![Canvas recipe](/screenshots/canvas-recipe.png) # How to use -Place down a Canvas block, you'll see that it extends beyond its node space marking a 16x16x16 space. +Place down a Canvas block, you'll see that it extends beyond its node space marking a cube (available in sizes 2, 4, 8, 16 and 32) + +The following screenshots show the old texture of the canvas (the one and only 16x16x16) now replaced by a new texture marked 16 just like the ones you can here below: + +![Canvas sizes](/screenshots/canvas-sizes.png) + +So here is the example using the canvas with size 16 marking its capture space: ![Empty canvas](/screenshots/canvas-empty.png) -In this space you can build anthing you like by using colored wool blocks. +In this space you can build anthing you like by using colored wool blocks_ ![Building inside the canvas](/screenshots/canvas-build.png) -Once you're done with your build, go to the Canvas block and right click it: you'll be asked to provide a name for your mesh (you can type any text in there, with uppercases and any symbol). +Once you're done with your build, go to the Canvas block and right click it: you'll be asked to provide a name for your mesh (you can type any text in there, with uppercases and any symbol): ![Request for name](/screenshots/prompt-name.png) @@ -40,7 +50,7 @@ When you confirm such name (you can cancel it by hitting the ESC key) you'll lik If you confirm the name by hitting ENTER you may not be presented with the above confirmation. It will appear in the chat as well just in case. Upon saving a few temporary files will be created in the "/mod_storage/wesh" subfolder in your world's folder: -- the .obj file will contain a model with your build scaled down 16 times (so that it will occupy only one block) +- the .obj file will contain a model with your build scaled down to fit exactly one block - the .dat file will contain the original name you have chosen for your mesh, along with some other data (read the section about using custom textures below) - the .matrix.dat file will contain a serialized version of your build, that may eventually get used to rebuild / reimport it in the game allowing you to alter it (right now you can't import them, so make sure you don't dismantle your build if you want to alter and capture it again) @@ -83,6 +93,8 @@ In the .dat file of each mesh you'll find something like this: }, } +(please consider that the number "16" here above indicates the size of the texture, it has nothing to do with the size of the canvas you use to capture your build) + In order to add a new variant simply add a line with your texture name and make sure you save such texture file in the "/textures" folder of the mod. You can also remove the lines you're not interested in and the mod will not generate those variants. For example, here we remove all but the "plain" version and add a custom one: diff --git a/init.lua b/init.lua index 129f04c..d6fd15f 100644 --- a/init.lua +++ b/init.lua @@ -28,25 +28,34 @@ end function wesh._main_bindings() minetest.register_on_player_receive_fields(wesh.on_receive_fields) - minetest.register_craft({ - output = "wesh:canvas", - recipe = { - {'group:wool', 'group:wool', 'group:wool'}, - {'group:wool', 'default:bronze_ingot', 'group:wool'}, - {'group:wool', 'group:wool', 'group:wool'}, - } - }) - - minetest.register_node("wesh:canvas", { - drawtype = "mesh", - mesh = "zzz_wesh_canvas.obj", - tiles = { "wool-72.png" }, - paramtype2 = "facedir", - on_rightclick = wesh.canvas_interaction, - description = "Woolen Mesh Canvas", - walkable = true, - groups = { dig_immediate = 3}, - }) + local function register_canvas(size, ingot) + minetest.register_craft({ + output = "wesh:canvas" .. size, + recipe = { + {"group:wool", "group:wool", "group:wool"}, + {"group:wool", "default:" .. ingot .. "_ingot", "group:wool"}, + {"group:wool", "group:wool", "group:wool"}, + } + }) + minetest.register_node("wesh:canvas" .. size, { + drawtype = "mesh", + mesh = "zzz_canvas" .. size .. ".obj", + tiles = { "canvas.png" }, + paramtype2 = "facedir", + on_rightclick = wesh.canvas_interaction, + description = "Woolen Mesh Canvas - Size " .. size, + walkable = true, + groups = { dig_immediate = 3 }, + }) + end + + register_canvas("02", "steel") + register_canvas("04", "copper") + register_canvas("08", "tin") + register_canvas("16", "bronze") + register_canvas("32", "gold") + + minetest.register_alias("wesh:canvas", "wesh:canvas16") end -- creates a 4x4 grid of UV mappings, each with a margin of one pixel @@ -157,16 +166,17 @@ function wesh._init_geometry() } end -function wesh._reset_geometry() +function wesh._reset_geometry(canv_size) wesh.matrix = {} wesh.vertices = {} wesh.vertices_indices = {} wesh.faces = {} - wesh.traverse_matrix(function(p) + local function reset(p) if not wesh.matrix[p.x] then wesh.matrix[p.x] = {} end if not wesh.matrix[p.x][p.y] then wesh.matrix[p.x][p.y] = {} end wesh.matrix[p.x][p.y][p.z] = "air" - end) + end + wesh.traverse_matrix(reset, canv_size) end -- ======================================================================== @@ -183,20 +193,31 @@ end function wesh.on_receive_fields(player, formname, fields) if formname == "save_mesh" then local canvas = wesh.player_canvas[player:get_player_name()] - wesh.save_new_mesh(canvas.pos, canvas.facedir, player, fields.meshname) + canvas.node = minetest.get_node_or_nil(canvas.pos) + if not canvas.node then return end + + local canv_size = canvas.node.name:gsub(".*(%d%d)$", "%1") + if not canv_size then canv_size = 16 end + + canv_size = tonumber(canv_size) + if canv_size ~= 2 and canv_size ~= 4 and canv_size ~= 8 and canv_size ~= 32 then + canv_size = 16 + end + + wesh.save_new_mesh(canvas.pos, canv_size, canvas.facedir, player, fields.meshname) end end -function wesh.save_new_mesh(canvas_pos, facedir, player, description) +function wesh.save_new_mesh(canvas_pos, canv_size, facedir, player, description) -- empty all helper variables - wesh._reset_geometry() + wesh._reset_geometry(canv_size) -- read all nodes from the canvas space in the world -- extract the colors and put them into a helper matrix of color voxels - wesh.traverse_matrix(wesh.node_to_voxel, canvas_pos, facedir) + wesh.traverse_matrix(wesh.node_to_voxel, canv_size, canv_size, canvas_pos, facedir) -- generate faces according to voxels - wesh.traverse_matrix(wesh.voxel_to_faces) + wesh.traverse_matrix(wesh.voxel_to_faces, canv_size, canv_size) -- this will be the actual content of the .obj file local vt_section = wesh.vertex_textures @@ -343,13 +364,13 @@ end -- mesh generation helpers -- ======================================================================== -function wesh.construct_face(rel_pos, texture_vertices, facename, vertices, normal_index) +function wesh.construct_face(rel_pos, canv_size, texture_vertices, facename, vertices, normal_index) local normal = wesh.face_normals[normal_index] local hider_pos = vector.add(rel_pos, normal) - if not wesh.out_of_bounds(hider_pos) and wesh.get_voxel_color(hider_pos) ~= "air" then return end + if not wesh.out_of_bounds(hider_pos, canv_size) and wesh.get_voxel_color(hider_pos) ~= "air" then return end local face_line = "f " for i, vertex in ipairs(vertices) do - local index = wesh.get_vertex_index(rel_pos, vertex) + local index = wesh.get_vertex_index(rel_pos, canv_size, vertex) face_line = face_line .. index .. "/" .. texture_vertices[i] .. "/" .. normal_index .. " " end table.insert(wesh.faces, face_line) @@ -373,18 +394,18 @@ end function wesh.get_node_color(pos) local node = minetest.get_node_or_nil(pos) - if not node then return "trasparent" end + if not node then return "air" end local parts = string.split(node.name, ":") return parts[#parts] end -function wesh.make_absolute(canvas_pos, facedir, relative_pos) - -- relative positions range from (1, 1, 1) to (16, 16, 16) +function wesh.make_absolute(canvas_pos, canv_size, facedir, relative_pos) + -- relative positions range from (1, 1, 1) to (canv_size, canv_size, canv_size) -- shift relative to canvas node within canvas space local shifted_pos = {} shifted_pos.y = relative_pos.y - 1 - shifted_pos.x = relative_pos.x - 8 + shifted_pos.x = relative_pos.x - (canv_size / 2) shifted_pos.z = relative_pos.z -- transform according to canvas facedir @@ -400,33 +421,33 @@ function wesh.transform(facedir, pos) return (wesh._transfunc[facedir + 1] or wesh._transfunc[1])(pos) end -function wesh.node_to_voxel(rel_pos, canvas_pos, facedir) - local abs_pos = wesh.make_absolute(canvas_pos, facedir, rel_pos) +function wesh.node_to_voxel(rel_pos, canv_size, canvas_pos, facedir) + local abs_pos = wesh.make_absolute(canvas_pos, canv_size, facedir, rel_pos) local color = wesh.get_node_color(abs_pos) wesh.set_voxel_color(rel_pos, color) end -function wesh.voxel_to_faces(rel_pos) +function wesh.voxel_to_faces(rel_pos, canv_size) local color = wesh.get_voxel_color(rel_pos) if color == "air" then return end for facename, facedata in pairs(wesh.face_construction) do local texture_vertices = wesh.get_texture_vertices(color) - wesh.construct_face(rel_pos, texture_vertices, facename, facedata.vertices, facedata.normal) + wesh.construct_face(rel_pos, canv_size, texture_vertices, facename, facedata.vertices, facedata.normal) end end -function wesh.get_vertex_index(pos, vertex_number) +function wesh.get_vertex_index(pos, canv_size, vertex_number) -- get integral offset of vertices related to voxel center local offset = wesh.cube_vertices[vertex_number] -- convert integral offset to real offset - offset = vector.multiply(offset, 1/32) + offset = vector.multiply(offset, 1/canv_size/2) - -- scale voxel center from range 1~16 to range 1/16 ~ 1 - pos = vector.divide(pos, 16) + -- scale voxel center from range 1~canv_size to range 1/canv_size ~ 1 + pos = vector.divide(pos, canv_size) -- center whole mesh around zero and shift it to make room for offsets - pos = vector.subtract(pos, 1/2 + 1/32) + pos = vector.subtract(pos, 1/2 + 1/canv_size/2) -- not really sure whether this should be done here, -- but if I don't do this the resulting mesh will be wrongly mirrored @@ -465,10 +486,10 @@ end -- generic helpers -- ======================================================================== -function wesh.out_of_bounds(pos) - return pos.x < 1 or pos.x > 16 - or pos.y < 1 or pos.y > 16 - or pos.z < 1 or pos.z > 16 +function wesh.out_of_bounds(pos, canv_size) + return pos.x < 1 or pos.x > canv_size + or pos.y < 1 or pos.y > canv_size + or pos.z < 1 or pos.z > canv_size end function wesh.check_plain(text) @@ -477,10 +498,10 @@ function wesh.check_plain(text) return text:gsub("[^%w]+", "_"):lower() end -function wesh.traverse_matrix(callback, ...) - for x = 1, 16 do - for y = 1, 16 do - for z = 1, 16 do +function wesh.traverse_matrix(callback, canv_size, ...) + for x = 1, canv_size do + for y = 1, canv_size do + for z = 1, canv_size do callback({x = x, y = y, z = z}, ...) end end diff --git a/models/README.txt b/models/README.txt index b293f9b..91d6ad3 100644 --- a/models/README.txt +++ b/models/README.txt @@ -1,3 +1,3 @@ This folder will contain your generated meshes, if you want to get rid of any of them you need to delete them from here -IMPORTANT: do NOT delete the file "zzz_wesh_canvas.obj" +IMPORTANT: do NOT delete any of the "zzz_canvas_NN.obj" files! diff --git a/models/zzz_canvas02.obj b/models/zzz_canvas02.obj new file mode 100644 index 0000000..8ae1249 --- /dev/null +++ b/models/zzz_canvas02.obj @@ -0,0 +1,116 @@ +# Blender v2.79 (sub 0) OBJ File: 'canvas2.blend' +# www.blender.org +mtllib canvas2.mtl +o mesh01 +v 0.500000 -0.490000 0.500000 +v 0.400000 -0.490000 0.500000 +v 0.400000 -0.490000 2.400000 +v 0.500000 -0.490000 2.400000 +v -1.400000 -0.490000 0.600000 +v -1.500000 -0.490000 0.600000 +v -1.500000 -0.490000 2.500000 +v -1.400000 -0.490000 2.500000 +v 0.500000 -0.490000 2.500000 +v 0.500000 -0.490000 2.400000 +v -1.400000 -0.490000 2.400000 +v -1.400000 -0.490000 2.500000 +v 0.400000 -0.490000 0.600000 +v 0.400000 -0.490000 0.500000 +v -1.500000 -0.490000 0.500000 +v -1.500000 -0.490000 0.600000 +v 0.500000 1.490000 0.500000 +v 0.400000 1.490000 0.500000 +v 0.400000 1.490000 2.400000 +v 0.500000 1.490000 2.400000 +v -1.400000 1.490000 0.600000 +v -1.500000 1.490000 0.600000 +v -1.500000 1.490000 2.500000 +v -1.400000 1.490000 2.500000 +v 0.500000 1.490000 2.500000 +v 0.500000 1.490000 2.400000 +v -1.400000 1.490000 2.400000 +v -1.400000 1.490000 2.500000 +v 0.400000 1.490000 0.600000 +v 0.400000 1.490000 0.500000 +v -1.500000 1.490000 0.500000 +v -1.500000 1.490000 0.600000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 0.645833 0.250000 +vt 0.645833 0.284722 +vt 0.013889 0.284722 +vt 0.013889 0.250000 +vt 0.645833 0.076389 +vt 0.645833 0.111111 +vt 0.013889 0.111111 +vt 0.013889 0.076389 +vt 0.645833 0.041667 +vt 0.645833 0.076389 +vt 0.013889 0.076389 +vt 0.013889 0.041667 +vt 0.645833 0.145833 +vt 0.645833 0.180556 +vt 0.013889 0.180556 +vt 0.013889 0.145833 +vt 0.645833 0.180556 +vt 0.645833 0.215278 +vt 0.013889 0.215278 +vt 0.013889 0.180556 +vt 0.645833 0.215278 +vt 0.645833 0.250000 +vt 0.013889 0.250000 +vt 0.013889 0.215278 +vt 0.645833 0.013889 +vt 0.645833 0.041667 +vt 0.013889 0.041667 +vt 0.013889 0.013889 +vt 0.645833 0.111111 +vt 0.645833 0.145833 +vt 0.013889 0.145833 +vt 0.013889 0.111111 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 0.666667 0.666667 +vt 0.333333 0.666667 +vt 0.333333 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.666667 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vn 0.0000 1.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 +usemtl ___default___ +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 9/9/1 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 16/16/1 +f 17/17/1 18/18/1 19/19/1 20/20/1 +f 21/21/1 22/22/1 23/23/1 24/24/1 +f 25/25/1 26/26/1 27/27/1 28/28/1 +f 29/29/1 30/30/1 31/31/1 32/32/1 +f 33/33/2 34/34/2 35/35/2 36/36/2 +f 37/37/3 38/38/3 39/39/3 40/40/3 +f 40/41/4 39/42/4 33/43/4 36/44/4 +f 34/45/5 38/38/5 37/37/5 35/46/5 +f 39/47/1 38/48/1 34/45/1 33/43/1 +f 35/46/6 37/49/6 40/50/6 36/44/6 diff --git a/models/zzz_canvas04.obj b/models/zzz_canvas04.obj new file mode 100644 index 0000000..61eee4b --- /dev/null +++ b/models/zzz_canvas04.obj @@ -0,0 +1,118 @@ +# Blender v2.79 (sub 0) OBJ File: 'canvas4.blend' +# www.blender.org +mtllib canvas4.mtl +o mesh01.001_mesh01.002 +v 1.500000 -0.490000 0.500000 +v 1.400000 -0.490000 0.500000 +v 1.400000 -0.489999 4.400000 +v 1.500000 -0.489999 4.400000 +v -2.400000 -0.490000 0.600000 +v -2.500000 -0.490000 0.600000 +v -2.500000 -0.489999 4.500000 +v -2.400000 -0.489999 4.500000 +v 1.500000 -0.489999 4.500000 +v 1.500000 -0.489999 4.400000 +v -2.400000 -0.489999 4.400001 +v -2.400000 -0.489999 4.500000 +v 1.400000 -0.490000 0.600000 +v 1.400000 -0.490000 0.500000 +v -2.500000 -0.490000 0.500000 +v -2.500000 -0.490000 0.600000 +v 1.500000 3.490000 0.499999 +v 1.400000 3.490000 0.499999 +v 1.400000 3.490001 4.400000 +v 1.500000 3.490001 4.400000 +v -2.400000 3.490000 0.600000 +v -2.500000 3.490000 0.600000 +v -2.500000 3.490001 4.500000 +v -2.400000 3.490001 4.500000 +v 1.500000 3.490001 4.500000 +v 1.500000 3.490001 4.400000 +v -2.400000 3.490001 4.400000 +v -2.400000 3.490001 4.500000 +v 1.400000 3.490000 0.599999 +v 1.400000 3.490000 0.499999 +v -2.500000 3.490000 0.500000 +v -2.500000 3.490000 0.600000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 0.284722 +vt 1.000000 0.298611 +vt 0.430556 0.298611 +vt 0.430556 0.284722 +vt 1.000000 0.243056 +vt 1.000000 0.256944 +vt 0.430556 0.256944 +vt 0.430556 0.243056 +vt 0.430556 0.243056 +vt 0.430556 0.229167 +vt 0.993056 0.229167 +vt 0.993056 0.243056 +vt 0.430556 0.215278 +vt 0.430556 0.201389 +vt 0.993056 0.201389 +vt 0.993056 0.215278 +vt 1.000000 0.270833 +vt 1.000000 0.284722 +vt 0.430556 0.284722 +vt 0.430556 0.270833 +vt 1.000000 0.256944 +vt 1.000000 0.270833 +vt 0.430556 0.270833 +vt 0.430556 0.256944 +vt 0.430556 0.229167 +vt 0.430556 0.215278 +vt 0.993056 0.215278 +vt 0.993056 0.229167 +vt 0.430556 0.201389 +vt 0.430556 0.187500 +vt 0.993056 0.187500 +vt 0.993056 0.201389 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.333333 0.333333 +vt 0.333333 0.666667 +vt -0.000000 0.666667 +vt 0.000000 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vn 0.0000 1.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 +usemtl ___default___.002 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 9/9/1 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 16/16/1 +f 17/17/1 18/18/1 19/19/1 20/20/1 +f 21/21/1 22/22/1 23/23/1 24/24/1 +f 25/25/1 26/26/1 27/27/1 28/28/1 +f 29/29/1 30/30/1 31/31/1 32/32/1 +f 33/33/2 34/34/2 35/35/2 36/36/2 +f 37/37/3 38/38/3 39/39/3 40/40/3 +f 40/41/4 39/42/4 33/43/4 36/44/4 +f 34/45/5 38/46/5 37/47/5 35/48/5 +f 39/49/1 38/50/1 34/45/1 33/43/1 +f 35/48/6 37/51/6 40/52/6 36/44/6 diff --git a/models/zzz_canvas08.obj b/models/zzz_canvas08.obj new file mode 100644 index 0000000..659291c --- /dev/null +++ b/models/zzz_canvas08.obj @@ -0,0 +1,116 @@ +# Blender v2.79 (sub 0) OBJ File: 'canvas8.blend' +# www.blender.org +mtllib canvas8.mtl +o mesh01.003 +v 3.500000 -0.490000 0.500000 +v 3.400000 -0.490000 0.500000 +v 3.400001 -0.489999 8.400000 +v 3.500001 -0.489999 8.400000 +v -4.400000 -0.490000 0.600001 +v -4.500000 -0.490000 0.600001 +v -4.499999 -0.489999 8.500000 +v -4.399999 -0.489999 8.500000 +v 3.500001 -0.489999 8.500000 +v 3.500001 -0.489999 8.400000 +v -4.399999 -0.489999 8.400000 +v -4.399999 -0.489999 8.500000 +v 3.400000 -0.490000 0.600000 +v 3.400000 -0.490000 0.500000 +v -4.500000 -0.490000 0.500000 +v -4.500000 -0.490000 0.600001 +v 3.500000 7.490000 0.499998 +v 3.400000 7.490000 0.499998 +v 3.400001 7.490001 8.399998 +v 3.500001 7.490001 8.399998 +v -4.400000 7.490000 0.599999 +v -4.500000 7.490000 0.599999 +v -4.499999 7.490001 8.499999 +v -4.399999 7.490001 8.499999 +v 3.500001 7.490001 8.499998 +v 3.500001 7.490001 8.399998 +v -4.399999 7.490001 8.399999 +v -4.399999 7.490001 8.499999 +v 3.400000 7.490000 0.599999 +v 3.400000 7.490000 0.499998 +v -4.500000 7.490000 0.499999 +v -4.500000 7.490000 0.599999 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 0.215278 +vt 1.000000 0.229167 +vt 0.000000 0.229167 +vt 0.000000 0.215278 +vt 1.000000 0.125000 +vt 1.000000 0.145833 +vt 0.000000 0.145833 +vt 0.000000 0.125000 +vt 1.000000 0.090278 +vt 1.000000 0.104167 +vt 0.000000 0.104167 +vt 0.000000 0.090278 +vt 1.000000 0.180556 +vt 1.000000 0.194444 +vt 0.000000 0.194444 +vt 0.000000 0.180556 +vt 1.000000 0.145833 +vt 1.000000 0.159722 +vt 0.000000 0.159722 +vt 0.000000 0.145833 +vt 1.000000 0.104167 +vt 1.000000 0.125000 +vt 0.000000 0.125000 +vt 0.000000 0.104167 +vt 1.000000 0.194444 +vt 1.000000 0.215278 +vt 0.000000 0.215278 +vt 0.000000 0.194444 +vt 1.000000 0.159722 +vt 1.000000 0.180556 +vt 0.000000 0.180556 +vt 0.000000 0.159722 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.666667 0.666667 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vn 0.0000 1.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 +usemtl ___default___.003 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 9/9/1 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 16/16/1 +f 17/17/1 18/18/1 19/19/1 20/20/1 +f 21/21/1 22/22/1 23/23/1 24/24/1 +f 25/25/1 26/26/1 27/27/1 28/28/1 +f 29/29/1 30/30/1 31/31/1 32/32/1 +f 33/33/2 34/34/2 35/35/2 36/36/2 +f 37/37/3 38/38/3 39/39/3 40/40/3 +f 40/41/4 39/42/4 33/43/4 36/44/4 +f 34/45/5 38/46/5 37/47/5 35/48/5 +f 39/49/1 38/50/1 34/45/1 33/43/1 +f 35/48/6 37/37/6 40/40/6 36/44/6 diff --git a/models/zzz_canvas16.obj b/models/zzz_canvas16.obj new file mode 100644 index 0000000..264817e --- /dev/null +++ b/models/zzz_canvas16.obj @@ -0,0 +1,118 @@ +# Blender v2.79 (sub 0) OBJ File: 'canvas16.blend' +# www.blender.org +mtllib canvas16.mtl +o mesh01.004 +v 7.500000 -0.490000 0.499999 +v 7.400000 -0.490000 0.499999 +v 7.400002 -0.489997 16.400000 +v 7.500001 -0.489997 16.400000 +v -8.400000 -0.490000 0.600001 +v -8.500000 -0.490000 0.600001 +v -8.499998 -0.489997 16.500000 +v -8.399998 -0.489997 16.500000 +v 7.500001 -0.489997 16.500000 +v 7.500001 -0.489997 16.400000 +v -8.399998 -0.489997 16.400000 +v -8.399998 -0.489997 16.500000 +v 7.400000 -0.490000 0.599999 +v 7.400000 -0.490000 0.499999 +v -8.500000 -0.490000 0.500001 +v -8.500000 -0.490000 0.600001 +v 7.500000 15.490000 0.499997 +v 7.400000 15.490000 0.499997 +v 7.400002 15.490003 16.399996 +v 7.500001 15.490003 16.399996 +v -8.400000 15.490000 0.599998 +v -8.500000 15.490000 0.599998 +v -8.499998 15.490003 16.499998 +v -8.399998 15.490003 16.499998 +v 7.500001 15.490003 16.499996 +v 7.500001 15.490003 16.399996 +v -8.399998 15.490003 16.399998 +v -8.399998 15.490003 16.499998 +v 7.400000 15.490000 0.599997 +v 7.400000 15.490000 0.499997 +v -8.500000 15.490000 0.499998 +v -8.500000 15.490000 0.599998 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 0.236111 +vt 1.000000 0.270833 +vt -0.000000 0.270833 +vt -0.000000 0.236111 +vt 1.000000 0.166667 +vt 1.000000 0.201389 +vt -0.000000 0.201389 +vt -0.000000 0.166667 +vt 1.000000 0.097222 +vt 1.000000 0.131944 +vt -0.000000 0.131944 +vt -0.000000 0.097222 +vt -0.000000 0.062500 +vt -0.000000 0.020833 +vt 1.000000 0.020833 +vt 1.000000 0.062500 +vt 1.000000 0.270833 +vt 1.000000 0.312500 +vt -0.000000 0.312500 +vt -0.000000 0.270833 +vt 1.000000 0.201389 +vt 1.000000 0.236111 +vt -0.000000 0.236111 +vt -0.000000 0.201389 +vt -0.000000 0.166667 +vt -0.000000 0.131944 +vt 1.000000 0.131944 +vt 1.000000 0.166667 +vt 1.000000 0.062500 +vt 1.000000 0.097222 +vt -0.000000 0.097222 +vt -0.000000 0.062500 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.666667 +vt 0.666667 1.000000 +vt 0.333333 1.000000 +vt 0.333333 0.666667 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vn 0.0000 1.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 +usemtl ___default___.004 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 9/9/1 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 16/16/1 +f 17/17/1 18/18/1 19/19/1 20/20/1 +f 21/21/1 22/22/1 23/23/1 24/24/1 +f 25/25/1 26/26/1 27/27/1 28/28/1 +f 29/29/1 30/30/1 31/31/1 32/32/1 +f 33/33/2 34/34/2 35/35/2 36/36/2 +f 37/37/3 38/38/3 39/39/3 40/40/3 +f 40/41/4 39/42/4 33/43/4 36/44/4 +f 34/45/5 38/46/5 37/47/5 35/48/5 +f 39/49/1 38/50/1 34/45/1 33/43/1 +f 35/48/6 37/51/6 40/52/6 36/44/6 diff --git a/models/zzz_canvas32.obj b/models/zzz_canvas32.obj new file mode 100644 index 0000000..a309e5d --- /dev/null +++ b/models/zzz_canvas32.obj @@ -0,0 +1,118 @@ +# Blender v2.79 (sub 0) OBJ File: 'canvas32.blend' +# www.blender.org +mtllib canvas32.mtl +o mesh01.005 +v 15.500000 -0.490000 0.499999 +v 15.400000 -0.490000 0.499999 +v 15.400002 -0.489995 32.400002 +v 15.500003 -0.489995 32.400002 +v -16.400000 -0.490000 0.600002 +v -16.500000 -0.490000 0.600002 +v -16.499998 -0.489995 32.500000 +v -16.399998 -0.489995 32.500000 +v 15.500003 -0.489995 32.500000 +v 15.500003 -0.489995 32.400002 +v -16.399998 -0.489995 32.400002 +v -16.399998 -0.489995 32.500000 +v 15.400000 -0.490000 0.599999 +v 15.400000 -0.490000 0.499999 +v -16.500000 -0.490000 0.500002 +v -16.500000 -0.490000 0.600002 +v 15.500000 31.490000 0.499994 +v 15.400000 31.490000 0.499994 +v 15.400002 31.490005 32.399994 +v 15.500003 31.490005 32.399994 +v -16.400000 31.490000 0.599996 +v -16.500000 31.490000 0.599996 +v -16.499998 31.490005 32.499996 +v -16.399998 31.490005 32.499996 +v 15.500003 31.490005 32.499992 +v 15.500003 31.490005 32.399994 +v -16.399998 31.490005 32.399998 +v -16.399998 31.490005 32.499996 +v 15.400000 31.490000 0.599994 +v 15.400000 31.490000 0.499994 +v -16.500000 31.490000 0.499996 +v -16.500000 31.490000 0.599996 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 1.000000 0.166667 +vt 1.000000 0.201389 +vt 0.000000 0.201389 +vt 0.000000 0.166667 +vt 1.000000 0.131944 +vt 1.000000 0.166667 +vt 0.000000 0.166667 +vt 0.000000 0.131944 +vt 0.000000 0.312500 +vt 0.000000 0.270833 +vt 1.000000 0.270833 +vt 1.000000 0.312500 +vt 1.000000 0.201389 +vt 1.000000 0.236111 +vt 0.000000 0.236111 +vt 0.000000 0.201389 +vt 1.000000 0.097222 +vt 1.000000 0.131944 +vt 0.000000 0.131944 +vt 0.000000 0.097222 +vt 1.000000 0.062500 +vt 1.000000 0.097222 +vt 0.000000 0.097222 +vt 0.000000 0.062500 +vt 1.000000 0.236111 +vt 1.000000 0.270833 +vt 0.000000 0.270833 +vt 0.000000 0.236111 +vt 1.000000 0.020833 +vt 1.000000 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.020833 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.333333 0.666667 +vt 0.333333 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.666667 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 0.666667 0.333333 +vt 1.000000 0.333333 +vt 1.000000 0.666667 +vt 0.666667 0.666667 +vn 0.0000 1.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 +usemtl ___default___.005 +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/1 6/6/1 7/7/1 8/8/1 +f 9/9/1 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 16/16/1 +f 17/17/1 18/18/1 19/19/1 20/20/1 +f 21/21/1 22/22/1 23/23/1 24/24/1 +f 25/25/1 26/26/1 27/27/1 28/28/1 +f 29/29/1 30/30/1 31/31/1 32/32/1 +f 33/33/2 34/34/2 35/35/2 36/36/2 +f 37/37/3 38/38/3 39/39/3 40/40/3 +f 40/41/4 39/42/4 33/43/4 36/44/4 +f 34/45/5 38/46/5 37/47/5 35/48/5 +f 39/49/1 38/50/1 34/45/1 33/43/1 +f 35/48/6 37/51/6 40/52/6 36/44/6 diff --git a/models/zzz_wesh_canvas.obj b/models/zzz_wesh_canvas.obj deleted file mode 100644 index 4dcd775..0000000 --- a/models/zzz_wesh_canvas.obj +++ /dev/null @@ -1,227 +0,0 @@ -v 7.437500 15.437500 16.437500 -v 7.437500 15.500000 16.437500 -v -8.437500 15.437500 16.437500 -v -8.437500 15.500000 16.437500 -v 7.437499 15.437500 0.562499 -v 7.437499 15.500000 0.562499 -v -8.437501 15.437500 0.562499 -v -8.437501 15.500000 0.562499 -v -8.500000 15.437500 16.500000 -v 7.500000 15.437500 16.500000 -v 7.500000 15.500000 16.500000 -v -8.500000 15.500000 16.500000 -v -8.500001 15.437500 0.499999 -v -8.500001 15.500000 0.499999 -v 7.499999 15.437500 0.499999 -v 7.499999 15.500000 0.499999 -v 7.437500 -0.500001 16.437498 -v 7.437500 -0.437501 16.437498 -v -8.437500 -0.500001 16.437498 -v -8.437500 -0.437501 16.437498 -v 7.437499 -0.499999 0.562500 -v 7.437499 -0.437499 0.562500 -v -8.437501 -0.499999 0.562500 -v -8.437501 -0.437499 0.562500 -v -8.500000 -0.500001 16.499998 -v 7.500000 -0.500001 16.499998 -v 7.500000 -0.437501 16.499998 -v -8.500000 -0.437501 16.499998 -v -8.500001 -0.499999 0.500000 -v -8.500001 -0.437499 0.500000 -v 7.499999 -0.499999 0.500000 -v 7.499999 -0.437499 0.500000 -v -0.500001 -0.499999 -0.500000 -v 0.499999 -0.499999 -0.500000 -v 0.499999 -0.499999 0.500000 -v -0.500001 -0.499999 0.500000 -v -0.500000 0.500001 -0.500000 -v 0.499999 0.500001 -0.499999 -v 0.499999 0.500001 0.500000 -v -0.500001 0.500001 0.500000 -vt 0.765625 0.421875 -vt 0.765625 0.406250 -vt 0.984375 0.406250 -vt 0.984375 0.421875 -vt 0.984375 0.359375 -vt 0.984375 0.375000 -vt 0.765625 0.375000 -vt 0.765625 0.359375 -vt 0.984375 0.343750 -vt 0.984375 0.359375 -vt 0.765625 0.359375 -vt 0.765625 0.343750 -vt 0.765625 0.390625 -vt 0.765625 0.375000 -vt 0.984375 0.375000 -vt 0.984375 0.390625 -vt 0.984375 0.390625 -vt 0.765625 0.390625 -vt 0.765625 0.375000 -vt 0.984375 0.375000 -vt 0.765625 0.406250 -vt 0.984375 0.406250 -vt 0.984375 0.421875 -vt 0.765625 0.421875 -vt 0.765625 0.390625 -vt 0.984375 0.406250 -vt 0.765625 0.406250 -vt 0.984375 0.484375 -vt 0.765625 0.484375 -vt 0.765625 0.468750 -vt 0.984375 0.468750 -vt 0.765625 0.296875 -vt 0.984375 0.296875 -vt 0.984375 0.312500 -vt 0.765625 0.312500 -vt 0.984375 0.296875 -vt 0.765625 0.296875 -vt 0.765625 0.281250 -vt 0.984375 0.281250 -vt 0.984375 0.281250 -vt 0.765625 0.281250 -vt 0.765625 0.265625 -vt 0.984375 0.265625 -vt 0.765625 0.421875 -vt 0.984375 0.421875 -vt 0.984375 0.437500 -vt 0.765625 0.437500 -vt 0.765625 0.453125 -vt 0.765625 0.437500 -vt 0.984375 0.437500 -vt 0.984375 0.453125 -vt 0.765625 0.437500 -vt 0.765625 0.421875 -vt 0.984375 0.421875 -vt 0.984375 0.437500 -vt 0.984375 0.453125 -vt 0.984375 0.468750 -vt 0.765625 0.468750 -vt 0.765625 0.453125 -vt 0.984375 0.468750 -vt 0.984375 0.484375 -vt 0.765625 0.484375 -vt 0.765625 0.468750 -vt 0.765625 0.437500 -vt 0.765625 0.421875 -vt 0.984375 0.421875 -vt 0.984375 0.437500 -vt 0.984375 0.281250 -vt 0.984375 0.296875 -vt 0.765625 0.296875 -vt 0.765625 0.281250 -vt 0.984375 0.328125 -vt 0.984375 0.343750 -vt 0.765625 0.343750 -vt 0.765625 0.328125 -vt 0.765625 0.312500 -vt 0.984375 0.312500 -vt 0.984375 0.328125 -vt 0.984375 0.359375 -vt 0.765625 0.359375 -vt 0.765625 0.343750 -vt 0.984375 0.343750 -vt 0.765625 0.328125 -vt 0.984375 0.328125 -vt 0.984375 0.343750 -vt 0.765625 0.343750 -vt 0.765625 0.453125 -vt 0.984375 0.453125 -vt 0.984375 0.468750 -vt 0.765625 0.468750 -vt 0.984375 0.375000 -vt 0.765625 0.375000 -vt 0.765625 0.359375 -vt 0.984375 0.359375 -vt 0.765625 0.312500 -vt 0.984375 0.312500 -vt 0.984375 0.281250 -vt 0.765625 0.281250 -vt 0.765625 0.265625 -vt 0.984375 0.265625 -vt 0.984375 0.453125 -vt 0.765625 0.453125 -vt 0.765625 0.437500 -vt 0.984375 0.437500 -vt 0.765625 0.390625 -vt 0.984375 0.390625 -vt 0.984375 0.406250 -vt 0.765625 0.406250 -vt 0.765625 0.421875 -vt 0.765625 0.406250 -vt 0.984375 0.406250 -vt 0.984375 0.421875 -vt 0.765625 0.468750 -vt 0.765625 0.453125 -vt 0.984375 0.453125 -vt 0.984375 0.468750 -vt 0.984375 0.296875 -vt 0.984375 0.312500 -vt 0.765625 0.312500 -vt 0.765625 0.296875 -vt 0.984375 0.437500 -vt 0.984375 0.453125 -vt 0.765625 0.453125 -vt 0.765625 0.437500 -vt 0.015625 0.984375 -vt 0.015625 0.265625 -vt 0.734375 0.265625 -vt 0.734375 0.984375 -vt 0.015625 0.984375 -vt 0.015625 0.265625 -vt 0.734375 0.265625 -vt 0.734375 0.984375 -vt 0.734375 0.265625 -vt 0.734375 0.984375 -vt 0.015625 0.984375 -vt 0.734375 0.265625 -vt 0.734375 0.984375 -vt 0.015625 0.984375 -vt 0.015625 0.984375 -vt 0.015625 0.265625 -vt 0.015625 0.265625 -vt 0.734375 0.265625 -vt 0.734375 0.984375 -vn 0.0000 0.0000 1.0000 -vn -1.0000 0.0000 0.0000 -vn -0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 -0.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -f 10/1/1 11/2/1 12/3/1 9/4/1 -f 9/5/2 12/6/2 14/7/2 13/8/2 -f 13/9/3 14/10/3 16/11/3 15/12/3 -f 15/13/4 16/14/4 11/15/4 10/16/4 -f 3/17/5 1/18/5 10/19/5 9/20/5 -f 2/21/6 4/22/6 12/23/6 11/24/6 -f 7/25/5 3/17/5 9/26/5 13/27/5 -f 4/28/6 8/29/6 14/30/6 12/31/6 -f 5/32/5 7/33/5 13/34/5 15/35/5 -f 8/36/6 6/37/6 16/38/6 14/39/6 -f 1/40/5 5/41/5 15/42/5 10/43/5 -f 6/44/6 2/45/6 11/46/6 16/47/6 -f 5/48/1 6/49/1 8/50/1 7/51/1 -f 7/52/4 8/53/4 4/54/4 3/55/4 -f 3/56/3 4/57/3 2/58/3 1/59/3 -f 1/60/2 2/61/2 6/62/2 5/63/2 -f 26/64/1 27/65/1 28/66/1 25/67/1 -f 25/68/2 28/69/2 30/70/2 29/71/2 -f 29/72/3 30/73/3 32/74/3 31/75/3 -f 31/75/4 32/76/4 27/77/4 26/78/4 -f 19/79/5 17/80/5 26/81/5 25/82/5 -f 18/83/6 20/84/6 28/85/6 27/86/6 -f 23/87/5 19/88/5 25/89/5 29/90/5 -f 20/91/6 24/92/6 30/93/6 28/94/6 -f 21/95/5 23/96/5 29/72/5 31/75/5 -f 24/97/6 22/98/6 32/99/6 30/100/6 -f 17/101/5 21/102/5 31/103/5 26/104/5 -f 22/105/6 18/106/6 27/107/6 32/108/6 -f 21/109/1 22/110/1 24/111/1 23/112/1 -f 23/113/4 24/114/4 20/115/4 19/116/4 -f 19/117/3 20/118/3 18/119/3 17/120/3 -f 17/121/2 18/122/2 22/123/2 21/124/2 -f 33/125/5 34/126/5 35/127/5 36/128/5 -f 37/129/6 40/130/6 39/131/6 38/132/6 -f 33/133/3 37/134/3 38/135/3 34/126/3 -f 34/126/4 38/136/4 39/137/4 35/138/4 -f 35/127/1 39/137/1 40/139/1 36/140/1 -f 37/129/2 33/141/2 36/142/2 40/143/2 diff --git a/screenshots/canvas-sizes.png b/screenshots/canvas-sizes.png new file mode 100644 index 0000000..edebb8f Binary files /dev/null and b/screenshots/canvas-sizes.png differ diff --git a/textures/canvas.png b/textures/canvas.png new file mode 100644 index 0000000..2cef219 Binary files /dev/null and b/textures/canvas.png differ