POV-Ray : Newsgroups : povray.binaries.images : isoteapot Server Time
14 Aug 2024 01:22:30 EDT (-0400)
  isoteapot (Message 1 to 10 of 18)  
Goto Latest 10 Messages Next 8 Messages >>>
From: ABX
Subject: isoteapot
Date: 13 Jan 2003 05:27:28
Message: <bq452vgbjar919o5h6p6kccbculd64qdf1@4ax.com>
isosurface from mesh from official sample files

do not ask how long rendered

ABX


Post a reply to this message


Attachments:
Download 'f_teapot.png' (84 KB)

Preview of image 'f_teapot.png'
f_teapot.png


 

From: Daniel Prien
Subject: Re: isoteapot
Date: 13 Jan 2003 05:32:22
Message: <3e2295b6$1@news.povray.org>
> do not ask how long rendered

Render time? ; )


Post a reply to this message

From: ABX
Subject: Re: isoteapot
Date: 13 Jan 2003 05:39:55
Message: <jo552vs74rk5sbo8hkgdcfc6ppc2jjqkef@4ax.com>
On Mon, 13 Jan 2003 11:29:43 +0100, "Daniel Prien"
<wil### [at] gmxnet> wrote:
> > do not ask how long rendered
>
> Render time? ; )

about 0,5 weeks

of course using IC_Triangle from IsoCSG Library

ABX


Post a reply to this message

From: Rafal 'Raf256' Maj
Subject: Re: isoteapot
Date: 13 Jan 2003 06:36:19
Message: <Xns930280191FA27raf256com@204.213.191.226>
ABX <abx### [at] abxartpl> wrote in 
news:jo552vs74rk5sbo8hkgdcfc6ppc2jjqkef@4ax.com

> about 0,5 weeks
> of course using IC_Triangle from IsoCSG Library

Imho it would a good idea to invent some optimizations for isosurfaces, and 
for displacment. I have a few ideas, maybe some of them would be usefull :)


-- 
#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

From: ABX
Subject: Re: isoteapot
Date: 13 Jan 2003 06:56:44
Message: <rv952vckkflqsalno9vj8m7rb95kg43aq4@4ax.com>
On 13 Jan 2003 06:36:19 -0500, "Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote:
> > about 0,5 weeks
> > of course using IC_Triangle from IsoCSG Library
>
> Imho it would a good idea to invent some optimizations for isosurfaces, and 
> for displacment. I have a few ideas, maybe some of them would be usefull :)

To optimize anything you should know it internally. To know something
internally you should know already implemented optimizations and solutions. Do
you know optimizations already implemented in isosurfaces as well as used
algorithms? Would you like to list them so community could get advantages from
your knowledge?

ABX


Post a reply to this message

From: Doctor John
Subject: Re: isoteapot
Date: 13 Jan 2003 09:30:10
Message: <web.3e22cd325f2ddff9b29393de0@news.povray.org>
ABX wrote:

<snip>

>algorithms? Would you like to list them so community could get advantages from
>your knowledge?
>
>ABX
>

I'll second that request, ABX.

IMNSHO the whole purpose of publishing on a newsgroup such as this is to
share knowledge as opposed to publishing just to demonstrate how "amazing"
you are.

John
--

Run Fast
Run Free
Run Linux


Post a reply to this message

From: Rafal 'Raf256' Maj
Subject: Re: isoteapot
Date: 13 Jan 2003 12:31:40
Message: <Xns9302BC563194Araf256com@204.213.191.226>
ABX <abx### [at] abxartpl> wrote in 
news:rv952vckkflqsalno9vj8m7rb95kg43aq4@4ax.com

> To optimize anything you should know it internally. To know something

but if I have only a concept how isosurface work, I can still make 
suggestions, even if they are not good - they can 'inspiere' someone with 
better knowlage of isosurface code

-- 
#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

From: ABX
Subject: Re: isoteapot
Date: 13 Jan 2003 12:47:52
Message: <aju52vkn21i8o83452s558bq1p00t9ot05@4ax.com>
On 13 Jan 2003 12:31:40 -0500, "Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote:
> > To optimize anything you should know it internally. To know something
>
> but if I have only a concept how isosurface work, I can still make 
> suggestions

Sure, you can. So what is the first? I have also some isosurface related ideas
and I would like to listen your proposition before coding anything.

ABX


Post a reply to this message

From: Rafal 'Raf256' Maj
Subject: Re: isoteapot
Date: 13 Jan 2003 19:39:06
Message: <Xns930310AB16E24raf256com@204.213.191.226>
ABX <abx### [at] abxartpl> wrote in
news:aju52vkn21i8o83452s558bq1p00t9ot05@4ax.com 

> Sure, you can. So what is the first? I have also some isosurface
> related ideas and I would like to listen your proposition before
> coding anything. 

Most simple - to buid complex bounding boxes, or rather bounding shapes. 
And to use 2 shapes. Bound and InnerBound. 

Best scene to ilustrate this speed up is :
  + simple isusurface (i.e. sphere, torus, blob etc)
  + but with displaced surface (i.e. +f_noise3d(x*10,y*10,z*10)*.1)
  + casting a big shadow (i.e. on plane under surface)
  + with area light

Shape A is stanart bounding_box - it covers MINIMU area where MIGTH be our 
isosurface

Shape B (inner-bounding) is a simple shape that coverw MAXIMUM area where 
MUST be our isosurface.

When ray (or shadow-ray) hits shape B - it is 100% shure that shadow is 
there (we do not have to do isosurface calculations). If it hits neither 
boxes - there is no shadow (this is now - standart bounding box).

Example :

        * light                

   ..........  <-- isosurface
  ...........
  .......... 
   ..........

----------------- plane






        * light                

   ..........  <-- isosurface
  ..XXXXXXX..
  ..XXXXXXX.    X-the inner bounding box
   .XXXXXXX..

----------------- plane
 12345678901234 - this 14 spots neede shado ray tests. most of them hit X, 
so we have about 80% less isosurfaces tests.


In some cases determinating inner-bounding-box shape is simple, i.e.:

isosurface {
  #local e=0.1;
  function {  x*x+y*y+z*z - 1 + f_noise3d(x,y,z)*e }
  contained_by { sphere { 0 1+e } } 
   inner_bound { sphere { 0 1-e } } 
 [...]
}

-- 
#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

From: Rafal 'Raf256' Maj
Subject: Re: isoteapot
Date: 13 Jan 2003 19:43:49
Message: <Xns93031177E7E74raf256com@204.213.191.226>
"Rafal 'Raf256' Maj" <raf### [at] raf256com> wrote in 
news:Xns### [at] 204213191226

>   function {  x*x+y*y+z*z - 1 + f_noise3d(x,y,z)*e }
>   contained_by { sphere { 0 1+e } } 
>   inner_bound { sphere { 0 1-e } } 


function {  x*x+y*y+z*z - 1 + f_noise3d(x,y,z)*e }
contained_by { sphere { 0 1 } } 
 inner_bound { sphere { 0 1-e } } 

-or-

function {  x*x+y*y+z*z - 1 - f_noise3d(x,y,z)*e }
contained_by { sphere { 0 1+e } } 
 inner_bound { sphere { 0 1 } } 

oh and I forgot, Imho for shapes where calculations are *very* expensive 
(like isosurfaces) we whould use comples shapes to bound them, or even 
hierarchies, like :

isosurface is bounded with:
  ..a very complex mesh (10,000 faces[1])
    ..and this compelx mesh is bounded with simple mesh (100 faces)
     ..and simple mesh is finaly bounded by box

[1] - this complex mesh can be builded automaticly i.e. by trace funcion, 
and results may be saved to some file and re-calculated only when 
isosurface will change.

-- 
#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

Goto Latest 10 Messages Next 8 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.