|  |  | Christoph Hormann wrote:
>
>
> Tom Bates wrote:
> >
> > [...]
> >
> > I would be extremely grateful if someone could enlighten me as to what I need to
do.
> > If you need more information than what I've provided here, please let me know.
>
> You should post your code (the mechsim block would be sufficient).
>
> Christoph
>
Thank you, Christoph, for your attention.
I've included relevant bits from my scene file, below.
A little additional explanation:
I could not seem to properly read the "MSIM" bit at the beginning of the standard
mechsim topology file, (MegaPOV gave me the message: "Parse Error: Expected 'float,
vector, or string literal', undeclared identifier 'MSIM' found instead") so I also
replaced the save_file command with my own macro that created a file that used only
floats and vectors.  I've included the macros "DoMyLoadFile" and "DoMySaveFile".
When I watch the "Calculating Mechanics Simulation" in the bottom of the window, the
Time always starts at zero.
When I look at the mechsim topology file, it never changes from the original, as if
none of the masses ever really moved.
Thank you again for your help.
Tom Bates
--
#macro T(B)#local m=mod(B,8);#local B=floor(B/8);m#end#local C=126981491245202;#
local D=115694168992822;sphere_sweep{b_spline 16#local i=0;#while(i<16)<T(C)-4,T
(D)-4,10-i/10>.1#local i=i+1;#end pigment{rgb 1}}light_source{-10,1} //Tom Bates
---------- Excerpts from Test1.pov -------------
#version unofficial megapov 1.0;
#include "mechsim.inc"
#declare fn_Env = function { y }
//  ...
#macro DoMyLoadFile(FileName)
  #fopen LoadFile FileName read
  #read (LoadFile, MSIM_ID, MSIM_Version, MSIM_Time)  //  <<--  I have to do
something with this, but what?
  #read (LoadFile, NMasses, NConnections, NFaces)
  #local i=0;
  #while (i<NMasses)
    #read (LoadFile, MPos, MVel, MRad, MMass)
    mass { MPos, MVel, MRad mass MMass}
    #local i=i+1;
  #end
  #local i=0;
  #while (i<NConnections)
    #read (LoadFile, MMass1, MMass2, MStiff, MDamp, MLength)
    #if (frame_number=3)
      #if (i=cMainEnd + 12 + 0)  #local MLength = 2.5-2*0.3;  #end
      #if (i=cMainEnd + 12 + 1)  #local MLength = 2.5-2*0.3;  #end
      //  ...
    #end
    connection { MMass1, MMass2 stiffness MStiff damping MDamp length MLength}
    #local i=i+1;
  #end
  #local i=0;
  #while (i<NFaces)
    #read (LoadFile, MMass1, MMass2, MMass3)
    face { MMass1, MMass2, MMass3 }
    #local i=i+1;
  #end
  #fclose LoadFile
#end
#macro DoMySaveFile(FileName)
  #fopen SaveFile FileName write
  #write (SaveFile, "42, 0,\n0,\n")  //  <<--  I have to fix this, but how?
  #write (SaveFile, mechsim:mass_count,",\n")
  #write (SaveFile, mechsim:connection_count,",\n")
  #write (SaveFile, mechsim:face_count,",\n")
  #local i=0;
  #while (i<mechsim:mass_count)
    #write (SaveFile, mechsim:mass(i):position,",",
                      mechsim:mass(i):velocity,",",
                      mechsim:mass(i):radius,",",
                      mechsim:mass(i):mass,",\n")
    #local i=i+1;
  #end
  #local i=0;
  #while (i<mechsim:connection_count)
    #write (SaveFile, mechsim:connection(i):index1,",",
                      mechsim:connection(i):index2,",",
                      mechsim:connection(i):stiffness,",",
                      mechsim:connection(i):damping,",",
                      mechsim:connection(i):length,",\n")
    #local i=i+1;
  #end
  #local i=0;
  #while (i<mechsim:face_count)
    #write (SaveFile, mechsim:face(i):index1,",",
                      mechsim:face(i):index2,",",
                      mechsim:face(i):index3,",\n")
    #local i=i+1;
  #end
  #fclose SaveFile
#end
global_settings {
  assumed_gamma 1.0
  max_trace_level 15
  mechsim {
    // Most of these settings were what I copied out of one of the samples.
    gravity <0, -9.81, 0>
    method 2
    environment {
      function { fn_Env(x, y, z) }
      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 500
      time_step (1/24)/500
      topology {
        #local cMainEnd   = 1257;
        //  load_file "test1.dat"
        DoMyLoadFile("test1.dat")
        //  save_file "test1.dat" 3
        DoMySaveFile("test1.dat")
      }
    #else
      step_count 0
      topology {
        #local mFRUStart  = mechsim:mass_count;
          Bone(TransFRU)
        #local mFRUEnd    = mechsim:mass_count;
        #local mFRLStart  = mechsim:mass_count;
          Bone(TransFRL)
        #local mFRLEnd    = mechsim:mass_count;
        #local mFLUStart  = mechsim:mass_count;
          Bone(TransFLU)
        #local mFLUEnd    = mechsim:mass_count;
        #local mFLLStart  = mechsim:mass_count;
          Bone(TransFLL)
        #local mFLLEnd    = mechsim:mass_count;
        #local mBRUStart  = mechsim:mass_count;
          Bone(TransBRU)
        #local mBRUEnd    = mechsim:mass_count;
        #local mBRLStart  = mechsim:mass_count;
          Bone(TransBRL)
        #local mBRLEnd    = mechsim:mass_count;
        #local mBRFStart  = mechsim:mass_count;
          Bone(TransBRF)
        #local mBRFEnd    = mechsim:mass_count;
        #local mBLUStart  = mechsim:mass_count;
          Bone(TransBLU)
        #local mBLUEnd    = mechsim:mass_count;
        #local mBLLStart  = mechsim:mass_count;
          Bone(TransBLL)
        #local mBLLEnd    = mechsim:mass_count;
        #local mBLFStart  = mechsim:mass_count;
          Bone(TransBLF)
        #local mBLFEnd    = mechsim:mass_count;
        #local mMainStart = mechsim:mass_count;
        MechSim_Generate_Grid_Std( 0, 0.1, Dense, Stiff, Damp,
                            Faces, <1,1,1>, <5,2,9>, TransMain, 3 )
        #local mMainEnd   = mechsim:mass_count;
        #local cMainEnd   = mechsim:connection_count;
        #debug concat("#local cMainEnd = ",str(cMainEnd,0,0),";\n")
        Heel(mFRUEnd, mFRLStart, 0.3)
        Heel(mFLUEnd, mFLLStart, 0.3)
        Knee(mBRUEnd, mBRLStart, 0.7)
        Heel(mBRLEnd, mBRFStart, 0.9)
        Knee(mBLUEnd, mBLLStart, 0.7)
        Heel(mBLLEnd, mBLFStart, 0.9)
        Shoulder(mMainStart+0,mFRUStart,0.6)
        Shoulder(mMainStart+3,mFLUStart,0.6)
        HipJoint(mMainEnd  -3,mBRUStart,0.8)
        HipJoint(mMainEnd  -0,mBLUStart,0.8)
        //  save_file "test1.dat" 3
        DoMySaveFile("test1.dat")
      }
    #end
  }
}
Post a reply to this message
 |  |