|
|
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in
news:Xns### [at] 204213191226
> also think that adding
> trace() function to it may improve isosurfaces.
...by pre-counting it into mesh, or as above into structure made from 3d
points. While using simple 3d array is nonsense because even 500x500x500
will almost totaly eat up memory, using structures that inteligently save
lit areas might be usefull for some situations.
If we ignore trace() function, the solution for 1D is a modiffied binary
tree :
0 32 48 64
/-------\ /\ this shape will be saved +/- in format :
area 0..32 is totaly empty
area 32..64 is complicated:
area 32..48 is toatly lit, shape L-border
in point 32 with normal __ , texture __ etc
area 48-64 is complicated:
area 48..56 is LIT, with R-border in 56 with normal __ etc
[...]
So each parent has 2 childs, each child can be :
- pointer to actual child structure
- information that child area is 100% empty
- information that child area is 100% LIT
plus - some extra informations for borders like normals (maybe pigments)
Ofcourse final version will should be much more sufisticated to get reale
speed improvment
--
#macro g(U,V)(.4*abs(sin(9*sqrt(pow(x-U,2)+pow(y-V,2))))*pow(1-min(1,(sqrt(
pow(x-U,2)+pow(y-V,2))*.3)),2)+.9)#end#macro p(c)#if(c>1)#local l=mod(c,100
);g(2*div(l,10)-8,2*mod(l,10)-8)*p(div(c,100))#else 1#end#end light_source{
y 2}sphere{z*20 9pigment{function{p(26252423)*p(36455644)*p(66656463)}}}//M
Post a reply to this message
|
|