custom_materials.lua
NAME
custom_materials
NOTES
Package of custom materials.
Example 1:
require("custom_materials")
mat = custom_materials.new(true)
mat:turquoise()
mat:show()
Example 2:
...
require("custom_materials")
mat = custom_materials.new()
mat:turquoise()
plot:add(mat.material)
SOURCE
require("register")
local P = {}
if _REQUIREDNAME == nil then
custom_materials = P
else
_G[_REQUIREDNAME] = P
end
function P.new(test)
if (test) then
local render, scene, root, light, material, shape, xyz, nor =
zeGrf.new("render", "scene", "node", "light", "material", "polygon", "vertex", "vertex")
render:add(scene)
scene:set{node = root}
root:add(light, material, shape)
light:set{position = {1, 1, 1}}
shape:set{type = "triangles", vertex = xyz, vertex_normal = nor}
P.render = render
P.material = material
local arr = zeUtl.new("double")
zeMake.sphere(arr, 150, 5)
xyz:add(arr)
arr:shift(3)
nor:add(arr)
else
P.material = zeGrf.new("material")
end
return P
end
function P.show(self)
require("towindow")
towindow(self.render, 521, 512)
end
function P.black_plastic(self, side)
if not side then side = 0 end
self.material:set{ambient = {0, 0, 0, 1, side},
diffuse = {.01, .01, .01, 1, side},
specular = {.5, .5, .5, 1, side},
shininess = {32, side}}
end
function P.white_plastic(self, side)
if not side then side = 0 end
self.material:set{ambient = {0, 0, 0, 1, side},
diffuse = {.55, .55, .55, 1, side},
specular = {.7, .7, .7, 1, side},
shininess = {32, side}}
end
function P.brass(self, side)
if not side then side = 0 end
self.material:set{ambient = {.329412, .223529, .027451, 1, side},
diffuse = {.780392, .568627, .113725, 1, side},
specular = {.992157, .941176, .807843, 1, side},
shininess = {27.8974, side}}
end
function P.bronze(self, side)
if not side then side = 0 end
self.material:set{ambient = {.2125, .1275, .054, 1, side},
diffuse = {.714, .4284, .18144, 1, side},
specular = {.393548, .271906, .166712, 1, side},
shininess = {25.6, side}}
end
function P.chrome(self, side)
if not side then side = 0 end
self.material:set{ambient = {.25, .25, .25, 1, side},
diffuse = {.4, .4, .4, 1, side},
specular = {.774597, .774597, .774597, 1, side},
shininess = {76.8, side}}
end
function P.copper(self, side)
if not side then side = 0 end
self.material:set{ambient = {.19125, .0735, .0225, 1, side},
diffuse = {.7038, .27018, .0828, 1, side},
specular = {.256777, .137622, .086014, 1, side},
shininess = {12.8, side}}
end
function P.emerald(self, side)
if not side then side = 0 end
self.material:set{ambient = {.0215, .1745, .0215, 1, side},
diffuse = {.07568, .61424, .07568, 1, side},
specular = {.633, .727811, .633, 1, side},
shininess = {78.8, side}}
end
function P.gold(self, side)
if not side then side = 0 end
self.material:set{ambient = {.24725, .1995, .0745, 1, side},
diffuse = {.75164, .60648, .22648, 1, side},
specular = {.628281, .555802, .366065, 1, side},
shininess = {51.2, side}}
end
function P.jade(self, side)
if not side then side = 0 end
self.material:set{ambient = {.135, .2225, .1575, 1, side},
diffuse = {.135, .2225, .1575, 1, side},
specular = {0.316228, 0.316228, 0.316228, 1, side},
shininess = {12.8, side}}
end
function P.obsidian(self, side)
if not side then side = 0 end
self.material:set{ambient = {.05375, .05, .06625, 1, side},
diffuse = {.18275, .17, .22525, 1, side},
specular = {0.332741, 0.328634, 0.346435, 1, side},
shininess = {38.4, side}}
end
function P.pearl(self, side)
if not side then side = 0 end
self.material:set{ambient = {.25, .20725, .20725, 1, side},
diffuse = {1, .829, .829, 1, side},
specular = {.296648, .296648, .296648, 1, side},
shininess = {11.264, side}}
end
function P.pewter(self, side)
if not side then side = 0 end
self.material:set{ambient = {.105822, .058824, .113725, 1, side},
diffuse = {.427451, .470588, .541176, 1, side},
specular = {.333333, .333333, .521569, 1, side},
shininess = {9.84615, side}}
end
function P.polished_bronze(self, side)
if not side then side = 0 end
self.material:set{ambient = {.25, .148, .06475, 1, side},
diffuse = {.4, .2368, .1036, 1, side},
specular = {.774597, .458461, .200621, 1, side},
shininess = {76.8, side}}
end
function P.polished_copper(self, side)
if not side then side = 0 end
self.material:set{ambient = {.2295, .08825, .0275, 1, side},
diffuse = {.5508, .2118, .066, 1, side},
specular = {.580594, .223257, .0695701, 1, side},
shininess = {51.2, side}}
end
function P.polished_gold(self, side)
if not side then side = 0 end
self.material:set{ambient = {.24725, .2245, .0645, 1, side},
diffuse = {.34615, .3143, .0903, 1, side},
specular = {.797357, .723991, .208006, 1, side},
shininess = {83.2, side}}
end
function P.polished_silver(self, side)
if not side then side = 0 end
self.material:set{ambient = {0.23125, 0.23125, 0.23125, 1, side},
diffuse = {0.2775, 0.2775, 0.2775, 1, side},
specular = {0.773911, 0.773911, 0.773911, 1, side},
shininess = {89.6, side}}
end
function P.rubber(self, side)
if not side then side = 0 end
self.material:set{ambient = {.02, .02, .02, 1, side},
diffuse = {.01, .01, .01, 1, side},
specular = {.4, .4, .4, 1, side},
shininess = {10.0, side}}
end
function P.ruby(self, side)
if not side then side = 0 end
self.material:set{ambient = {.1745, .01175, .01175, 1, side},
diffuse = {.61424, .04136, .04136, 1, side},
specular = {.727811, .626959, .626959, 1, side},
shininess = {76.8, side}}
end
function P.silver(self, side)
if not side then side = 0 end
self.material:set{ambient = {.19225, .19225, .19225, 1, side},
diffuse = {.50754, .50754, .50754, 1, side},
specular = {.508275, .508275, .508275, 1, side},
shininess = {51.2, side}}
end
function P.turquoise(self, side)
if not side then side = 0 end
self.material:set{ambient = {.1, .18725, .174, 1, side},
diffuse = {.396, .74151, .69102, 1, side},
specular = {.297254, .30829, .306675, 1, side},
shininess = {12.8, side}}
end