added tsm scene; smoothunion, more transforms, fix mat3 product; expose problem with lua api
This commit is contained in:
@@ -70,7 +70,7 @@ local function randomtorus()
|
||||
local thickness = util.randab(radius/4, radius)
|
||||
local orientation = randomorientation()
|
||||
|
||||
return obj.affinetransform(obj.torus(pos, radius, thickness), orientation, vec3.O)
|
||||
return util.transform(obj.torus(pos, radius, thickness), orientation)
|
||||
end
|
||||
|
||||
local function randomcuboid()
|
||||
@@ -86,13 +86,12 @@ local function randomcylinder()
|
||||
local height = util.randab(0, SCALE)
|
||||
local orientation = randomorientation()
|
||||
|
||||
return obj.affinetransform(
|
||||
return util.transform(
|
||||
obj.intersection(
|
||||
obj.cylinder(pos, radius),
|
||||
obj.cuboid(pos, vec3.new(radius, height, radius))
|
||||
),
|
||||
orientation,
|
||||
vec3.O
|
||||
orientation
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
+157
@@ -0,0 +1,157 @@
|
||||
-- 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)),
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user