POV-Ray : Newsgroups : povray.unofficial.patches : Mechsim collisions: with what? Server Time
16 May 2024 08:16:55 EDT (-0400)
  Mechsim collisions: with what? (Message 1 to 3 of 3)  
From: Greg M  Johnson
Subject: Mechsim collisions: with what?
Date: 17 Oct 2004 20:05:18
Message: <417308be$1@news.povray.org>
What classes of objects may interact with (serve as the environment for) a
collision which can happen with mechsim?

Say I want to drop a blob of jello on a "character" or have a "character"
punch a wall.   What types of povray objects would be permitted?

So far I can tell the list includes: i) plane ii) another mech-sim defined
mesh and iii) some isosurfaces according to Christoph's syntax.   May it
involve any and all povray objects, and if so, can someone share a scene
file where say the mechsim-generated mesh collides with a povray (okay 3.01
SDL)- defined object?   Or just change a line or two in blocks.pov or
bar.pov that were shipped with 1.1

Thanks.


Post a reply to this message

From: Christoph Hormann
Subject: Re: Mechsim collisions: with what?
Date: 19 Oct 2004 04:35:02
Message: <cl2jhe$280$1@chho.imagico.de>
Greg M. Johnson wrote:
> What classes of objects may interact with (serve as the environment for) a
> collision which can happen with mechsim?

The docs clearly tell you that you can use either a function or an 
object for this purpose:

http://megapov.inetart.net/manual-1.1/global_settings.html#mechsim_env_definition

So either:

global_settings {
   ...
   mechsim {
     ...
     environment {
       function { ... }
     }
   }
}

or

global_settings {
   ...
   mechsim {
     ...
     environment {
       object { ... }
     }
   }
}

Note that both types of environment are handled internally in different 
ways.  Some collision situation can only be handled quite poorly with 
object based environments while function based environments always work 
perfectly when the function represents linear distance from the 
environment surface.

Christoph

-- 
POV-Ray tutorials, include files, Sim-POV,
HCR-Edit and more: http://www.tu-bs.de/~y0013390/
Last updated 23 Sep. 2004 _____./\/^>_*_<^\/\.______


Post a reply to this message

From: gregjohn
Subject: Re: Mechsim collisions: with what?
Date: 19 Oct 2004 12:30:00
Message: <web.417540b52ac6dc3f40d56c170@news.povray.org>
Christoph Hormann <chr### [at] gmxde> wrote:
>
> global_settings {
>    ...
>    mechsim {
>      ...
>      environment {
>        object { ... }
>      }
>    }
> }
>

object{OBJECT_IDENTIFIER} gives an error.  Is it
object OBJECT_IDENTIFIER    ?

Okay, given the code below, would one say I still haven't understood the
manual, or have I chosen a set of conditions that where object-based
collisions are handled poorly?

Thanks for your consideration.  I really have RTFM and I really am that
dense.

// Persistence Of Vision Ray Tracer Scene Description File
// -------------------------------------------------------
// File: @(#)blocks.pov
// Description: mechanics simulation sample scene [without iso-defined
objects]
// Features demonstrated: mechsim
// Creation Date: $ 14 Oct 2002, 16:55:14 $
// Last modified: $ 12 Jul 2004, 22:36:49 $
// Author: Christoph Hormann
// major modifications by Greg M. Johnson
//
// @@ Demonstrating groups and mass-face-collisions.
//
// Render instructions:
// --------------------
//
// First render as still with:
//
// -w320 -h240
//
// Then as animation with:
//
// -w320 -h240 +a0.3 -j +kff70

#version unofficial megapov 1.1;

#include "mechsim.inc"

#declare fn_Env = function { z }

#declare Trans1 =
  transform {
    translate -1.5*<0.7, 0.7, 0>
    rotate -40*z
    translate 1.8*x
    translate 0.5*z
  }

#declare Trans2 =
  transform {
    translate -1.5*<0.7, 0.7, 0>
    rotate 25*z
    translate -2.1*x
    translate 0.5*z
  }

#declare Trans3 =
  transform {
    translate -<4*0.55, 0.55, 0>
    translate 2.9*z
  }

#declare Envy=union{
        sphere{0,2 pigment {rgb 0.5} finish {reflection 0.3} translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 0*z
translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 60*z
translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 120*z
translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 180*z
translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 240*z
translate -2*z}
        sphere{x*4,1 pigment {rgb 0.5} finish {reflection 0.3} rotate 300*z
translate -2*z}
        plane{z,-3 pigment {rgb 1 }  finish { ambient 0.05 diffuse 0.45 }}
        }

object{Envy}

global_settings {
  max_trace_level 10
  assumed_gamma 1

  mechsim {
    gravity <0, 0, -9.81>
    method 2
    bounding 3

    environment {
      //function { fn_Env(x, y, z) }
      object Envy
      stiffness 240000
      damping 35000
      friction 0.2, 1.001
    }

    collision {
      2, 2
      stiffness 180000
      damping 30000 //5000
      friction 0.2, 1.001
    }

    #if (clock_on)
      step_count 300 //500
      time_step (1/30)/300 //500

      topology {
 load_file "blocks1.dat"
 save_file "blocks1.dat"
      }
    #else
      step_count 0
      topology {

        #declare Stiff=24000;
        #declare Damp=3000;
        //#declare Stiff=52000;
        //#declare Damp=2500;

        group {
   MechSim_Generate_Grid_Std(<0, 0, 0>, 0.1, 22000, Stiff, Damp, true, <0.7,
0.7, 0.7>, <4, 4, 4>, Trans1, 3)
 }
        group {
   MechSim_Generate_Grid_Std(<0, 0, 0>, 0.1, 22000, Stiff, Damp, true, <0.7,
0.7, 0.7>, <4, 4, 4>, Trans2, 3)
 }
        group {
   MechSim_Generate_Grid_Std(<0, 0, 0>, 0.1, 22000, Stiff, Damp, true,
<0.55, 0.55, 0.55>, <9, 3, 3>, Trans3, 3)
 }
 save_file "blocks1.dat"
      }
    #end

  }
}



//MechSim_Show_All_Objects(-1, true, false, "")
MechSim_Show_Grid(0, 4,4,4, true, false, 0, "")
MechSim_Show_Grid(108, 4,4,4, true, false, 0, "")
MechSim_Show_Grid(216, 9, 3, 3, true, false, 0, "")


camera {
  location    <15, -10, 3.5>*1.4
  direction   y
  sky         z
  up          z
  right       (4/3)*x
  look_at     <0, 0, 0.>
  angle       30
}

light_source {
  <3.2, -0.3, 1.8>*100000
  color rgb <1.6, 1.5, 1.0>
}

sky_sphere {
  pigment {
    gradient z
    color_map {
      [0.00 rgb <0.8,0.9,1.0>]
      [0.10 rgb <0.6,0.7,1.0>]
      [0.25 rgb <0.2,0.3,0.8>]
    }
  }
}

//---------end of SDL
//---------end of SDL


Post a reply to this message

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