You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
3.4 KiB
157 lines
3.4 KiB
-- Scene developed by TSM71
|
|
-- Also this took 30 hours to render
|
|
|
|
local COLOR_BLACK = colorvec.new(0, 0, 0, 0)
|
|
|
|
local GRAY = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(0.5, 0.5, 0.5, 0.5),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
local CYAN = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(0, 1, 1, 0),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
local PINK = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(1, .5, .5, 0),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
local RED = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(1, 0, 0, 0),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
local MAGENTA = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(1, 0, 1, 0),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
local MIRROR = material.newfromdiagonal(
|
|
COLOR_BLACK,
|
|
colorvec.new(1, 1, 1, 1),
|
|
surfacetype.REFLECTIVE
|
|
)
|
|
local FLUORESCENT = material.new(
|
|
COLOR_BLACK,
|
|
colormat.new(
|
|
.25, 0, 0, .25,
|
|
0, .25, 0, .75,
|
|
0, 0, .25, 0,
|
|
0, 0, 0, 0
|
|
),
|
|
surfacetype.DIFFUSE
|
|
)
|
|
|
|
--[[
|
|
obj.transformaround = function(a, b, c)
|
|
return util.translate(
|
|
util.transform(
|
|
util.translate(
|
|
a,
|
|
-c
|
|
),
|
|
b
|
|
),
|
|
c
|
|
)
|
|
end
|
|
--]]
|
|
--obj.transformaround = function(a, _b, _c) return a end
|
|
--obj.affinetransform = function(a, _b, _c) return a end
|
|
--obj.smoothunion = function(a, b, _r) return obj.union(a, b) end
|
|
---[[
|
|
util.stacktransforms = function(list)
|
|
--do return list[1] end
|
|
--do return list[#list] end
|
|
local n = #list
|
|
local a = mat3.I
|
|
--for i=n, 1, -1 do
|
|
for i=1, n do
|
|
a = list[i] * a
|
|
--a = a * list[i]
|
|
end
|
|
return a
|
|
end
|
|
--]]
|
|
|
|
return obj.withlights(
|
|
obj.transformaround(
|
|
obj.withlights(
|
|
util.union({
|
|
util.intersection({
|
|
util.union({
|
|
obj.withmaterial(
|
|
obj.negation(
|
|
util.union({
|
|
obj.cuboid(vec3.new(0, 0, 0), vec3.new(.5, 1, 4)),
|
|
obj.cuboid(vec3.new(0, 0, 0), vec3.new(4, 1, .5))
|
|
})
|
|
),
|
|
GRAY
|
|
),
|
|
obj.withmaterial(
|
|
util.intersection({
|
|
util.union({
|
|
obj.cuboid(vec3.new(0, 1, 0), vec3.new(.4, .1, 3.9)),
|
|
obj.cuboid(vec3.new(0, 1, 0), vec3.new(3.9, .1, .4))
|
|
}),
|
|
obj.negation(
|
|
util.union({
|
|
obj.cuboid(vec3.new(0, 1, 0), vec3.new(.3, 1, 3.8)),
|
|
obj.cuboid(vec3.new(0, 1, 0), vec3.new(3.8, 1, .3))
|
|
})
|
|
)
|
|
}),
|
|
FLUORESCENT
|
|
),
|
|
obj.smoothunion(
|
|
obj.withmaterial(
|
|
obj.sphere(vec3.new(0, .75, 0), .25),
|
|
CYAN
|
|
),
|
|
obj.withmaterial( -- withdynamicmaterial
|
|
obj.sphere(vec3.new(-.5, .5, 0), .25),
|
|
MAGENTA --dynamicmaterial.missingtexture(vec3.new(-.5, .5, 0))
|
|
),
|
|
.5
|
|
)
|
|
}),
|
|
obj.withmaterial(
|
|
obj.negation(
|
|
obj.cuboid(vec3.new(0, 0, 0), vec3.new(2, .25, 2))
|
|
),
|
|
PINK
|
|
)
|
|
}),
|
|
obj.withmaterial(
|
|
obj.cylinder(vec3.new(1, 0, 0), .375),
|
|
RED
|
|
),
|
|
util.transform(
|
|
obj.withmaterial(
|
|
obj.torus(vec3.new(0, 0, -1), .375, .125),
|
|
MIRROR
|
|
),
|
|
transform.SWAPYZ
|
|
)
|
|
}),
|
|
{
|
|
light.new(vec3.new(.45, 1-.2, -.45), colorvec.new(0, 0, 0, .1)),
|
|
--light.new(vec3.new(.45, 1-.2, -.45), colorvec.new(0, 0, 0, 1)),
|
|
}
|
|
),
|
|
util.stacktransforms({
|
|
transform.scalexyz(1, -1, 1),
|
|
transform.rotatez(10*math.pi/180),
|
|
}),
|
|
vec3.new(0, 0, -1.5)
|
|
),
|
|
{
|
|
light.new(vec3.new(0, .9375, 0), colorvec.new(.5, .25, 0, 0)),
|
|
light.new(vec3.new(0, .9375, -.625), colorvec.new(0, 0, 1, 0)),
|
|
--light.new(vec3.new(0, .9375, 0), colorvec.new(5, 2.5, 0, 0)),
|
|
--light.new(vec3.new(0, .9375, -.625), colorvec.new(0, 0, 10, 0)),
|
|
}
|
|
) |