The My Couch Doesn’t Have The Guts To Talk To Me Or Any Blueberries Complaint Thread.

1323335373850

Comments

  • TJohnTJohn Posts: 11,214
    edited December 1969

    DanaTA said:
    DanaTA said:
    Rareth said:
    Skiriki said:
    Rezca said:
    No wonder the sun is so big. It keeps eating our moon!

    Psh. To the sun, our moon is like a pea in pod.

    THE SUN DEMANDS MORE MOONS.

    more like a mite on the pea in the pod...

    i watched a movie once with people growing in pods, replacing the original person,

    Invasion of the Body Snatchers...1978, Donald Sutherland and Jeff Goldblum and Brooke Adams. Unless you watched the original...that was in 1956 and starred Kevin McCarthy and Dana Wynters. Then in 1993 there was a sort of remake, Body Snatchers, starring Gabrielle Anwar and Meg Tilly. I never saw the original or the 1993 one.

    Dana

    Yah! that was the name. the version i saw had Leonard Nimoy in it.

    Yup, he was in it with Donal Sutherland. I think that is the favored version, but I'm not sure.

    Dana
    The original. Much creepier in B&W. (I'm old school, I know, but I saw the remakes. Not bad, but sometimes the original IS better.)

  • kyoto kidkyoto kid Posts: 41,208
    edited December 1969

    tjohn said:
    DanaTA said:
    DanaTA said:
    Rareth said:
    Skiriki said:
    Rezca said:
    No wonder the sun is so big. It keeps eating our moon!

    Psh. To the sun, our moon is like a pea in pod.

    THE SUN DEMANDS MORE MOONS.

    more like a mite on the pea in the pod...

    i watched a movie once with people growing in pods, replacing the original person,

    Invasion of the Body Snatchers...1978, Donald Sutherland and Jeff Goldblum and Brooke Adams. Unless you watched the original...that was in 1956 and starred Kevin McCarthy and Dana Wynters. Then in 1993 there was a sort of remake, Body Snatchers, starring Gabrielle Anwar and Meg Tilly. I never saw the original or the 1993 one.

    Dana

    Yah! that was the name. the version i saw had Leonard Nimoy in it.

    Yup, he was in it with Donal Sutherland. I think that is the favored version, but I'm not sure.

    Dana
    The original. Much creepier in B&W. (I'm old school, I know, but I saw the remakes. Not bad, but sometimes the original IS better.)
    ...I agree.

  • ps1borgps1borg Posts: 12,776
    edited December 1969

    Morning. Lots of songbirds singing in the day and warm just after dawn :)

  • M F MM F M Posts: 1,388
    edited December 1969

    DanaTA said:
    ...Years ago a brownout damaged the boot sector on the C: drive. At the time I was using compression software on it as well. Hard drives weren't so cheap back then. I forget the name of the application, but it was quite popular. ...

    "SuperStor" perhaps?
  • DanaTADanaTA Posts: 13,260
    edited December 1969

    M F M said:
    DanaTA said:
    ...Years ago a brownout damaged the boot sector on the C: drive. At the time I was using compression software on it as well. Hard drives weren't so cheap back then. I forget the name of the application, but it was quite popular. ...

    "SuperStor" perhaps?

    No, that doesn't sound right. It's been a long time, though. I think it was in the 90s. Oh, Oh! I remember...Stacker by Stac Electronics! They actually sued Microsoft over its use of DoubleDrive...there were patent offenses. They won $120Million. Microsoft won a counter suit in the amount of $13Million. Obviously Stac came out on top. Later drive costs came way down and drive capacity went way up, so there was no more need for it.

    Dana

  • SiscaSisca Posts: 875
    edited December 1969

    DanaTA said:
    Kyoto Kid said:
    ...I still have the drive in s sealed bag.

    If you have room in your box, you may be able to recover stuff if you connect it as a secondary drive. It's worth a try. I'm not sure if you're running the same OS now or not. But I think Windows can probably read drives formatted under an older OS, as long as it isn't too much older.

    Dana

    Or you could get a USB drive enclosure and turn it into a USB drive.

    Once you've gotten the data off you could then reformat it and use it to store a second copy of things. Not sure I'd trust a drive that's failed as my only backup but as a second or third copy it shouldn't be an issue.

    I actually have one of these (http://www.amazon.com/Thermaltake-Sata-HDD-Docking-Station/dp/B0012Z3MKW/ref=sr_1_3?ie=UTF8&qid=1378334618&sr=8-3&keywords=usb+sata+dock) that I can stick old hard drives in to dump copies of files onto.

  • M F MM F M Posts: 1,388
    edited December 1969

    DanaTA said:
    M F M said:
    DanaTA said:
    ...Years ago a brownout damaged the boot sector on the C: drive. At the time I was using compression software on it as well. Hard drives weren't so cheap back then. I forget the name of the application, but it was quite popular. ...

    "SuperStor" perhaps?

    No, that doesn't sound right. It's been a long time, though. I think it was in the 90s. Oh, Oh! I remember...Stacker by Stac Electronics! They actually sued Microsoft over its use of DoubleDrive...there were patent offenses. They won $120Million. Microsoft won a counter suit in the amount of $13Million. Obviously Stac came out on top. Later drive costs came way down and drive capacity went way up, so there was no more need for it.
    Heheh... I can think of a few things to do with $107Million... (-_-)...

    ... and yes, no need for on-the-fly drive compression any more... although it's surprising the compression algorithms haven't been implemented in hardware yet as a sales gimmick "Use our brand new 8TB SSDs!!!!1!"... then again, I'm sure somebody would try to drop a bunch of JPGs on there, and then find their drive fills up in double-speed (o_O).

  • DanaTADanaTA Posts: 13,260
    edited December 1969

    M F M said:
    DanaTA said:
    M F M said:
    DanaTA said:
    ...Years ago a brownout damaged the boot sector on the C: drive. At the time I was using compression software on it as well. Hard drives weren't so cheap back then. I forget the name of the application, but it was quite popular. ...

    "SuperStor" perhaps?

    No, that doesn't sound right. It's been a long time, though. I think it was in the 90s. Oh, Oh! I remember...Stacker by Stac Electronics! They actually sued Microsoft over its use of DoubleDrive...there were patent offenses. They won $120Million. Microsoft won a counter suit in the amount of $13Million. Obviously Stac came out on top. Later drive costs came way down and drive capacity went way up, so there was no more need for it.
    Heheh... I can think of a few things to do with $107Million... (-_-)...

    As can I...several things.

    Dana

  • ps1borgps1borg Posts: 12,776
    edited December 1969

    Sunrise gave way to grey sky and gentle rain, warm enough to almost have evaporated by the time it hits the ground :)

  • MistaraMistara Posts: 38,675
    edited December 1969

    wheee, waiting for DrWHO season6. sigh, iz gonna take a week.

  • MistaraMistara Posts: 38,675
    edited December 1969

    been thinking about sean bean's fate in g-o-t. in the first episode, he did to someone else what happened to him in the end.

  • ps1borgps1borg Posts: 12,776
    edited December 1969

    been thinking about sean bean's fate in g-o-t. in the first episode, he did to someone else what happened to him in the end.

    There is some kind of ghastly logic at work there but it all seems to unfold real sloooow. BUt I know ppl who can't get enough of it... :lol:

  • kyoto kidkyoto kid Posts: 41,208
    edited December 1969

    ...currently listening to the complete performance of Messiaen's Turangalila Symphony performed by the National Youth Orchestra of Great Britain.

    ...I'm in heaven right now.

  • kyoto kidkyoto kid Posts: 41,208
    edited September 2013

    ...another work by Mr Messiaen composed in the 1970s. here he uses elemental sounds to enhance the performance once again using a very enlarged percussion section as he did in the Truangalila Symphony. The work was commissioned to celebrate the bicentenary of the United States Declaration of Independence.

    the work is titled Des canyons aux etoiles (From the canyons to the stars). In addition to the standard instrumentation he includes a geophone, wind machine, and thunder sheet.

    Messiaen was always moved by the environment around him and cited various elements including light, birdsong, non western tradiitons (such as the gamelan and tabla rhythms) as well as stained glass as his influences for his compositions. The work was conceived after his visit to Bryce canyon in Utah.

    It may take a bit of thought to grasp but it is an incredibly astounding work. (and it is ninety minutes long).

    http://www.youtube.com/watch?v=5DjgpPL7RhA

    Post edited by kyoto kid on
  • SkirikiSkiriki Posts: 4,976
    edited December 1969

    Spyro said:
    I think thats an excellent Idea. The poor animal seems to have gone under the radar (support wise) for quite some time now. It certainly could use some more stuff. And its a great area of the market to take up considering most PA's are busy with other areas of focus. Not to mention, your strong love for animals, I think its right up your alley :)

    Yup. I do have some nice ideas, and on a conscious level I'm pretty sure I can pull 'em off, given some time to tinker with 3DCoat. On a subconscious level... well. I hate it when my brain tries to tell me that I'm a failure. I'm not! I can do this! Shut up, stupid parts of brain.

  • kyoto kidkyoto kid Posts: 41,208
    edited December 1969

    ...well guys it's been fun but I feel I may be on the verge of having my forum rights suspended soon. Won't go into the gory details.

    Life is hell when you are on a fixed income and try to keep up with a hobby that keeps your sanity intact.

  • M F MM F M Posts: 1,388
    edited November 2015

    Okay Spyro, try this one:

     

    // DAZ Studio version 3.0  filetype DAZ Script/********* PP2 exporter 2.0e** Description: Export Prop with limited Mat support.** Authors: JWAS84, DUKE533****** 24-02-09 ver 1a   (JWAS84)**   (c) Copyright NONE. Use for whatever you like.**   ExportObj Was written by Rob Whisenant.**   renderIcon Was written by Guandalug****** 18-11-09 ver 1b **   - working on DS 3!**   - lot of bug fixes**   - renderIcon was replaced (DS3 compatible)**   x only single object suport****** 22-11-09 ver 1c **   - more bug fixes**   - multi-object support (weld)**   - new script icon**   x code tweaking needed****** 27-11-09 ver 2a **   - more bug fixes**   - weld & chold mode**   - trans. channels save**   - GUI**   - new script icon****** 29-11-09 var 2b**   - code tweaking**   - morph settings****** 25-12-11 var 2c**   - fix for non DzDefaultMaterial properties (ie Uber or HSS)****** 23-02-12 var 2d**   - fix to avoid mangling Material names unless absolutely necessary;****** 03-09-13 var 2e**   - fix to support AoA_Subsurface shader and forum 80-column limit;****/// Variablesvar sSrcPath, sObjPath, lObjPath, sFileName, m_oFile;var nIndent = 0;const dazScaler = 243.84; // Scale to DAZ unitsvar m_Channels = [  [ "xOffsetA"   ,"OriginX" ,"OriginX"     ,"0.004" ],  [ "yOffsetA"   ,"OriginY" ,"OriginY"     ,"0.004" ],  [ "zOffsetA"   ,"OriginZ" ,"OriginZ"     ,"0.004" ],  [ "translateX" ,"xTran"   ,"X Translate" ,"0.001" ],  [ "translateY" ,"yTran"   ,"Y Translate" ,"0.001" ],  [ "translateZ" ,"zTran"   ,"Z Translate" ,"0.001" ],  [ "rotateX"    ,"xRotate" ,"X Rotate"    ,"1"     ],  [ "rotateY"    ,"yRotate" ,"Y Rotate"    ,"1"     ],  [ "rotateZ"    ,"zRotate" ,"Z Rotate"    ,"1"     ],  [ "scale"      ,"Scale"   ,"Scale"       ,"0.004" ],  [ "scaleX"     ,"xScale"  ,"X Scale"     ,"0.004" ],  [ "scaleY"     ,"yScale"  ,"Y Scale"     ,"0.004" ],  [ "scaleZ"     ,"zScale"  ,"Z Scale"     ,"0.004" ],  [ "xOffsetB"   ,"xOffB"   ,"xOffB"       ,"0.004" ],  [ "yOffsetB"   ,"yOffB"   ,"yOffB"       ,"0.004" ],  [ "zOffsetB"   ,"zOffB"   ,"zOffB"       ,"0.004" ]];// default settingssetup = {};setup.icon = 1;// ****// This is the main section that produces the Prop file.// ****var selected = Scene.getSelectedNodeList();if (selected.length == 1) {  // Target nodes  oNode = selected[0];  oNodes = oNode.getNodeChildren(1);  oNodes.unshift( oNode );    // Default files  var root = App.getContentMgr().getAbsolutePath( "runtime",0 );   setup.pp2 = root + "/libraries/props/" + oNode.name + ".pp2";  setup.obj = root + "/Geometries/" + oNode.name + ".obj";    // Open gui  win = initGui();  loadSetup( win );  ok = win.exec();    // If we have filename, carry on, else abort.  if (ok) {    // Save settings    saveSetup( win );        oFile = new DzFile( setup.pp2 );    oFile.open( oFile.ReadWrite | oFile.Truncate );        // Render an icon into the PROP folder.    setup.png = setup.pp2.replace(".pp2",".png");    renderIcon( setup.png );        // OBJ exporter need unique material names    setUniqueMetNames();        // Write PROP file header.    p("{");    p("version");    p("{");    p("number 4.01");    p("}");    p(" //");    p(" // PP2 exporter 2e");    p(" //");        while( oNode =oNodes[0] ) {      // Export the OBJ using the DAZ Exporter.      ExportObj();            PropName = oNode.name;      ObjFile = RelativePath( setup.obj );            // Write PROP geometry statement.      p(String("prop %1").arg(PropName));      p("{");      p("storageOffset 0 0.3487 0");      p( String("objFileGeom 0 0 %1").arg(ObjFile) );      p("}");      p("//");            // Output the Transformers. This routine will call the function      // for writing the Materials.      OutputTransformers(oNode);            // Materials section will shift oNodes !            if ( setup.single ) { break; }    }    // All done, write end of File.    p("doc");    p("{");    p(String("addActor %1").arg( PropName ));    p("}");    p("}");        oFile.close();    MessageBox.information( "PROP Created..", "Done", "&OK;" );    App.getContentMgr().refresh(1);  } } else {  MessageBox.information( "You must select an item in the scene first!",       "Oops!", "&OK;" );}// ****// Routine to write out the Transformers.//// A lot of default values are set, but we are the creator so we can say what// they will be.  The values selected are the value that POSER would use as// default.//function OutputTransformers(oNode) {  parent = oNode.isSelected() ? "UNIVERSE" : oNode.getNodeParent().name;    // For first section just use Defaults for now.  p(String("prop %1").arg(PropName));  p("{");  p(String("name %1").arg(PropName));  p("on");  p("bend               1");  p("dynamicsLock       1");  p("hidden             0");  p("addToMenu          1");  p("castsShadow        1");  p("includeInDepthCue  1");  p("useZBuffer         1");  p("parent             "+parent);  p("creaseAngle        80");    p("channels");  p("{");    // Output OffsetsA.  var orig = oNode.getOrigin();  var OX = orig.x / dazScaler;  var OY = orig.y / dazScaler;  var OZ = orig.z / dazScaler;  //  writeOffset( m_Channels[0], OX );  writeOffset( m_Channels[1], OY );  writeOffset( m_Channels[2], OZ );    // Output Translate  var LP = oNode.getLocalPos();  if ( !setup.pos && oNode.isSelected() ) { LP =DzVec3(); }  //  writeTrans( m_Channels[3], LP.x/dazScaler );  writeTrans( m_Channels[4], LP.y/dazScaler );  writeTrans( m_Channels[5], LP.z/dazScaler );    // Output Rotate  var RX = oNode.getXRotControl().getValue();  var RY = oNode.getYRotControl().getValue();  var RZ = oNode.getZRotControl().getValue();  if ( !setup.rot && oNode.isSelected() ) { RX =RY =RZ =0; }  //  writeTrans( m_Channels[6], RX );  writeTrans( m_Channels[7], RY );  writeTrans( m_Channels[8], RZ );    // Output Scale  var LS = oNode.getLocalScale();  var S1 = oNode.getScaleControl().getValue();  if ( !setup.scale && oNode.isSelected() ) { S1 =1; LS =DzMatrix3(); }  //  writeTrans( m_Channels[9],  S1 );  writeTrans( m_Channels[10], LS.m11/S1 );  writeTrans( m_Channels[11], LS.m22/S1 );  writeTrans( m_Channels[12], LS.m33/S1 );    // Output OffsetsB.  writeOffset( m_Channels[13], -OX );  writeOffset( m_Channels[14], -OY );  writeOffset( m_Channels[15], -OZ );    // Deal with MORPHS here.  ChkMorphs( oNode );    p("}");  // Close 'channels'    p(String("origin %1 %2 %3").arg(OX).arg(OY).arg(OZ) );    var oBox = oNode.getEndPoint();  var PosX = oBox.x / dazScaler;  var PosY = oBox.y / dazScaler;  var PosZ = oBox.z / dazScaler;  p(String("endPoint %1 %2 %3").arg(PosX).arg(PosY).arg(PosZ) );    var  oOri = oNode.getOrientation();  p(String("orientation %1 %2 %3").arg( oOri.x ).arg( oOri.y ).arg( oOri.z ) );    // Use more Default values.  p("displayOrigin      0");  p("displayMode USEPARENT");  p("customMaterial     1");    // Write out the MATERIAL section from here to keep the format  // the same as POSER.  OutputMaterial();    p("locked 0");  p("backfaceCull 0");  p("visibleInReflections 1");  p("visibleInRender 1");  p("displacementBounds 0");  p("shadingRate 0.2");  p("smoothPolys 1");  p("}");  // Close 'Prop'}// ****// Check for MORPHS and output data for them.//function ChkMorphs( oNode ) {  if ( setup.morph!=1 ) { return; }  var oObject = oNode.getObject();  if ( oObject == undefined ){ return; }    try {   oGeom = oObject.getCurrentShape().getGeometry();  } catch(x){ return; }      var nVerts = oGeom.getNumVertices();//  p(String("# Vertex count %1").arg(nVerts));  // Check to see if there are any modifiers (MORPHS). Loop through  // and write them out.  var nModifiers = oObject.getNumModifiers();  for( var ci =0; ci < nModifiers; ci++ ) {    // Get a valid morph.    var oMorph = oObject.getModifier(ci);    if ( oMorph.className() != "DzMorph" ) { continue; }        // Not intersted in modifier with no delta.    var oMorphDeltas = oMorph.getDeltas();    if (!oMorphDeltas) { continue; }        // If it has deltas we can start.    if ( oMorphDeltas.hasDeltas() ) {          var sMorphName   = oMorph.name;      var nMorphValue  = oMorph.getValueChannel().getValue();      var oMorphDeltas = oMorph.getDeltas();      var nMorphDeltas = oMorphDeltas.getNumDeltas();            p( String("targetGeom %1").arg(sMorphName) );      p("{");      p( String("name %1").arg(sMorphName) );      p("initValue 0");      p("hidden 0");      p("forceLimits 1");      p("min -100000");      p("max 100000");      p("trackingScale 0.02");      p("keys");      p("{");      p("static  0");      p( String("k 0 %1").arg(nMorphValue) );      p("}");      p("interpStyleLocked 0");      p( String("indexes %1").arg(nMorphDeltas) );      p( String("numbDeltas %1").arg(nVerts) );      p("deltas");       p("{");            // For each delta           for(var j = 0; j < nMorphDeltas; j++){       // Get delta and index       var vecDelta = oMorphDeltas.getDeltaVec(j);       var nDeltaIdx = oMorphDeltas.getDeltaIndex(j);       p( String("d %1 %2 %3 %4")            .arg(nDeltaIdx)     .arg(vecDelta.x/dazScaler)     .arg(vecDelta.y/dazScaler)     .arg(vecDelta.z/dazScaler) );      }      p("}");      p("blendType 0");      p("}");        } // Valid Morph  } // Next Morph}// ****// From here down are the Functions that are called to perform repeated tasks,// or best kept seperate i.e. renderIcon, ExportObj etc.//// Write Name, color and strength.//function WriteColor(Name,oMatColor,oMatStrength) {  oRed   = oMatColor.red / 255;  oGreen = oMatColor.green / 255;  oBlue  = oMatColor.blue / 255;  p( String("%1 %2 %3 %4 %5")      .arg(Name)      .arg(oRed).arg(oGreen).arg(oBlue)      .arg(oMatStrength) );}// Write a channel section to Prop file - Type 1//function writeTrans( par, nVal ){  p(String("%1 %2").arg( par[0] ).arg( par[1] ));  p("{");  p(String("name %1").arg( par[2] ));  p("initValue 0");  p("hidden 0");  p("forceLimits 0");  p("min -100000");  p("max 100000");  p(String("trackingScale %1").arg( par[3] ));  p("keys");  p("{");  p("static  0");  p(String("k 0 %1").arg( nVal ));  p("}");  p("interpStyleLocked 0");  p("}");}// Write a channel section to Prop file - Type 2//function writeOffset( par, nVal ){  p(String("%1 %2").arg( par[0] ).arg( par[1] ));  p("{");  p(String("name %1").arg( par[2] ));  p(String("initValue %1").arg( nVal ));  p("hidden 1");  p("forceLimits 0");  p("min -100000");  p("max 100000");  p(String("trackingScale %1").arg( par[3] ));  p("keys");  p("{");  p("static  1");  p("k 0 0");  p("}");  p("interpStyleLocked 0");  p(String("staticValue %1").arg( nVal ));  p("}");}// ****// Materials Section//function locateProperty(){  var Mat = arguments[0];  for ( var i = 1; i < arguments.length; ++i ) {    var prop = Mat.findPropertyByLabel( arguments[ i ] );    if (prop) return prop;  }    return null;}function boundValue( v, min, max ){  if (v < min) return min;  if (v > max) return max;  return v;}  function OutputMaterial() {  nodes = oNode.getNodeChildren(1);  nodes.unshift( oNode );    while( oNode =oNodes.shift() ) {      try {      var Mats = oNode.getObject().getCurrentShape().getAllMaterials();    } catch(x){ break; }        // Each material has a name, usually corresponding to the material    // zone (group of polygons) onto which it is applied.     // These material names must match the usemtl fields defined within    // the Wavefront .obj file.     //    for( var m = 0; m < Mats.length; m++ ) {          var Mat = Mats[m];            for( x =0; x<20; x++ ) {        Mat.name = Mat.name.replace( " ", "_" );      }            p( String("material %1").arg( Mat.name ) );      p("{");      // ****      // KdColor, KaColor, KsColor, TextureColor and ReflectionColor each      // specify RGB values with a strength setting tagged on.       // The values for each field are from 0.0 to 1.0.      //            // KdColor specifies the material's diffuse color.      var s = 0.0;      var pr;      if ( (pr = locateProperty( Mat, "Diffuse Strength" )) ) {       s = boundValue( pr.getValue(), 0.0, 1.0 );      }      WriteColor("KdColor",Mat.getDiffuseColor(),s);            // KaColor specifies the material's ambient color (for ambient lighting).      var c = QColor( 0,0,0 );      if ( (pr = locateProperty( Mat, "Ambient Color" )) ) {        c = pr.getColorValue();      }      s = 0.0;      if ( (pr = locateProperty( Mat, "Ambient Strength" )) ) {        s = boundValue( pr.getValue(), 0.0, 1.0 );      }      WriteColor("KaColor", c, s);            // KsColor specifies the material's specular color (for specular      // highlights).      c = QColor( 0,0,0 );      s = 0.0;            if ( (pr = locateProperty( Mat, "Specular Color" )) ) {        c = pr.getColorValue();      }            if ( (pr = locateProperty( Mat, "Specular Strength" )) ) {        s = boundValue( pr.getValue(), 0.0, 1.0 );      }      WriteColor("KsColor", c, s);            // TextureColor specifies a color, but the RGB is always 1,1,1.      // The strength setting affects the textureMap image.      WriteColor("TextureColor ",Mat.getDiffuseColor(), 1 );            // NsExponent - Glossiness. Its value ranges from 0 to 100.      s = 0.0;      if ( (pr = locateProperty( Mat, "Glossiness", "Specular Glossiness" )) ) {        s = boundValue( pr.getValue(), 0.0, 1.0 );      }      p(String("NsExponent %1").arg( (1-s) * 200 ));            // tMin - tMax is the transparency minimum and maximum values.      // Can't find tMin, use defaults       p("tMin 0");      oProperty = 1 - Mat.getBaseOpacity( );      p(String("tMax %1").arg(oProperty));            // tExpo is the transparency falloff.      oProperty = 0;      if ( (pr = locateProperty( Mat, "Opacity Strength" )) ) {       oProperty = boundValue( pr.getValue(), 0.0, 1.0 );      }      p(String("tExpo %1").arg(oProperty));            // bumpStrength is the strength of the bump map      // (how much apparent elevation is added negative values which      // range from -1.0 to 1.0.       oProperty = 0.0;      if ( (pr = locateProperty( Mat, "Bump Strength" )) ) {       oProperty = boundValue( pr.getValue(), -1.0, 1.0 );      }      p(String("bumpStrength %1").arg(oProperty));            // ksIgnoreTexture determines whether or not to apply texture      // to specular highlight. 0 or 1. DEFAULT      p("ksIgnoreTexture 0");            // reflectThruLights determines whether or not to multiply      // reflection through lights. 0 or 1. DEFAULT      p("reflectThruLights 1");            // reflectThruKd determines whether or not to multiply reflection      // through object color.       oProperty = null;      if ( (pr = locateProperty( Mat, "Multiply Reflection Through Opacity" )) ) {       oProperty = pr;      }       if ( oProperty ) { p("reflectThruKd 1"); }      else             { p("reflectThruKd 0"); }            // textureMap      oProperty = Mat.getColorMap();      if ( oProperty ) {        oFileName = RelativePath( oProperty.getFilename() );       p( String("textureMap %1").arg(oFileName) );      } else {       p("textureMap NO_MAP");      }            // bumpMap      oProperty = null;      if ( (pr = locateProperty( Mat, "Bump Strength")) ) {        oProperty = pr.getMapValue();      }      if ( oProperty ) {        oFileName = RelativePath( oProperty.getFilename() );       p( String("bumpMap %1").arg(oFileName) );      } else {       p("bumpMap NO_MAP");      }            // reflectionMap      oProperty = null;      if ( (pr = locateProperty( Mat, "Reflection Strength")) ) {       oProperty = pr.getMapValue();      }      if ( oProperty ) {       oFileName = RelativePath( oProperty.getFilename() );       p( String("reflectionMap %1").arg(oFileName) );      } else {       p("reflectionMap NO_MAP");      }            // transparencyMap      oProperty = Mat.getOpacityMap();      if ( oProperty ){       oFileName = RelativePath( oProperty.getFilename() );       p( String("transparencyMap %1").arg(oFileName) );      } else {       p("transparencyMap NO_MAP");      }            // ReflectionColor specifies the material's reflection color.       c = QColor(0,0,0);      if ( (pr = locateProperty( Mat, "Reflection Color")) ) {       c = pr.getColorValue();      }      WriteColor("ReflectionColor", c, 1 );            // reflectionStrength is the amount or "depth and clarity" of      // the reflection.      s = 0.0;      if ( (pr = locateProperty( Mat, "Reflection Strength")) ) {       s = boundValue( pr.getValue(), 0.0, 1.0 );      }      p( String("reflectionStrength %1").arg(s) );      p("}");        } // Next Mat    if ( !setup.weld ) { break; }    } // Next Node  PreviewMat();// End Material Section.}// ****// A Default Preview Material.//function PreviewMat(){  p("material Preview");  p("{");  p("KdColor 0.654622 0.497543 0.861782 1");   p("KaColor 0 0 0 1");   p("KsColor 0.187072 0.0360363 0.131175 1");   p("TextureColor 1 1 1 1");   p("NsExponent 5.0");   p("tMin 0");   p("tMax 0");   p("tExpo 0.6");   p("bumpStrength 1");   p("ksIgnoreTexture 0");   p("reflectThruLights 1");   p("reflectThruKd 0");   p("textureMap NO_MAP");  p("bumpMap NO_MAP");  p("reflectionMap NO_MAP");  p("transparencyMap NO_MAP");  p("ReflectionColor 1 1 1 1");   p("reflectionStrength 1");   p("}");}// ****// Write a line to the file and deal with indents.//function p( sData ){  if ( sData == "{" ) { nIndent++; }  for( var i = 1; i= 0 ) {    path = path.replace( "/", sep );  }  path = '"' + path+ '"';  return path;}// ****// Render an icon for the PROP.//function renderIcon( file ){  if ( setup.icon == 0 ) { return; }  if ( setup.icon == 1 ) {    Scene.saveThumbnail( file );  } else {    var RMgr = App.getRenderMgr();    var Opts = App.getRenderOptions();    Opts.applyChanges();    Opts.imageSize = Size(91,91);    Opts.renderImgToId =2;    Opts.renderImgFilename =file;    RMgr.doRender();    Opts.resetOptions();  }}// ****// Set unique material names before combine//function setUniqueMetNames() {  nodes = oNode.getNodeChildren(1);  nodes.unshift( oNode );  used_names = "|";  for( i =0; i< nodes.length; i++ ) {    try {      var Mats = nodes[ i ].getObject().getCurrentShape().getAllMaterials();    } catch(x){ continue; }    for( m =0; m< Mats.length; m++ ){      MatName = Mats[m].name;      //MatName = MatName.replace( /[0-9]+-/, "" );      MatName = MatName.replace( "Default", nodes[ i ].name );      if (used_names.find( "|" + MatName + "|") >= 0) {        Mats[m].name = MatName + "-" + Mats[m].getIndex();      } else {        Mats[m].name = MatName        used_names += MatName + "|";      }    }            }}// ****// Export the OBJ data to the file location provided.//function ExportObj() {  hideUnselected();  centerNodes();  getObjName();  //  const oEM = App.getExportMgr();   const oOE = oEM.findExporterByClassName( 'DzObjExporter' );   const oES = new DzFileIOSettings();   oOE.getDefaultOptions( oES );   //   oES.setStringValue( 'Preset', 'Custom (1 unit = 1cm)' );   oES.setStringValue( 'Scale', '243.84' );   oES.setBoolValue( 'SwapYZ', false );   oES.setBoolValue( 'IgnoreInvisible', true );   oES.setBoolValue( 'WeldSeams', false );   oES.setBoolValue( 'WriteO', false );   oES.setBoolValue( 'WriteG', true );   oES.setBoolValue( 'GroupNodes', false );   oES.setBoolValue( 'GroupSurfaces', false );   oES.setBoolValue( 'GroupSingle', false );   oES.setBoolValue( 'GroupGeom', true );   oES.setBoolValue( 'WriteVN', false );   oES.setBoolValue( 'WriteVT', true );   oES.setBoolValue( 'WriteUsemtl', true );   oES.setBoolValue( 'WriteMtllib', false );   oES.setBoolValue( 'CollectMaps', false );   oES.setBoolValue( 'ConvertMaps', false );   oES.setBoolValue( 'RemoveUnusedVerts', false );   oES.setIntValue( 'RunSilent', 1 );   //   oOE.writeFile( setup.obj, oES );  restoreNodes();}// ****// Get unique names for obj files//function getObjName(){  if ( oNode.isSelected() ) {    childIndex = 1; return;  }  setup.obj = setup.obj.replace( /(.cn)?[0-9]{0,2}.obj$/ ,"" );  setup.obj = setup.obj +".cn"+ childIndex +".obj";  childIndex++;}// get the object nodes onlyfunction getObjNodes(){  var nodes = Scene.getNodeList();  for( i =0; i.getObject()==null ) {      nodes.splice(i,1);    }  }  return nodes;}// hide unselected nodesfunction hideUnselected(){  var nodes = getObjNodes();  for( i =0; i.setVisible( 0 );  }  oNode.setVisible( 1 );  // export children too  if ( setup.weld ) {    var nodes = oNode.getNodeChildren(1);    for( i =0; i.setVisible( 1 );    }  }}// set the exportin positionfunction centerNodes(){  // backup pos & rot  oNode.Pos = oNode.getWSPos();  oNode.Rot = oNode.getWSRot();  // backup scale  oNode.Sc1 = oNode.getScaleControl().getValue();  oNode.ScX = oNode.getXScaleControl().getValue();  oNode.ScY = oNode.getYScaleControl().getValue();  oNode.ScZ = oNode.getZScaleControl().getValue();  // reset rotation  oNode.setWSRot( DzQuat(0,0,0,0) );  oNode.setLocalRot( oNode.getWSRot().inverse() );  oNode.setWSScale( DzMatrix3() );  // center obj  oNode.setWSPos( oNode.getOrigin() );  resetMorphs();}function restoreNodes(){  oNode.setWSPos( oNode.Pos );  oNode.setWSRot( oNode.Rot );  oNode.Sc1 = oNode.getScaleControl().setValue( oNode.Sc1 );  oNode.ScX = oNode.getXScaleControl().setValue( oNode.ScX );  oNode.ScY = oNode.getYScaleControl().setValue( oNode.ScY );  oNode.ScZ = oNode.getZScaleControl().setValue( oNode.ScZ );  restoreMorphs();  // unhide all  var nodes = getObjNodes();  for( i =0; i.setVisible( 1 );  }}function resetMorphs(){  oNode.mod = new Array();  if ( setup.morph ==2 ) { return; }  var oObject = oNode.getObject();  if ( oObject == undefined ){ return; }  var nModifiers = oObject.getNumModifiers();  for( i =0; i < nModifiers; i++ ) {    var oMorph = oObject.getModifier(i);    if ( oMorph.className() != "DzMorph" ) { continue; }    oNode.mod[ i ]= oMorph.getValueChannel().getValue();    oMorph.getValueChannel().setValue( 0 );  }}function restoreMorphs(){  var oObject = oNode.getObject();  if ( oObject == undefined ){ return; }  for( i =0; i < oNode.mod.length; i++ ) {    var val = oNode.mod[ i ];    if ( val ==0 ) { continue; }    oObject.getModifier(i).getValueChannel().setValue( val );  }}//// GUI//function initGui() {  // DIALOG  w = new DzDialog;  w.caption = "PP2 exporter";  w.width = 260;  w.height = 150;  // Main Layout  var wLyt = new DzVBoxLayout( w );  wLyt.autoAdd = true;  wLyt.margin = 5;  wLyt.spacing = 5;    // PP2 & OBJ files  var VBox = new DzVGroupBox( w );  VBox.title = "Destination Files";  VBox.columns = 2;  VBox.insideSpacing = 8;    label = new DzLabel( VBox );  label.text = "PP2:";  label.maxWidth = 20;    w.pp2 = new DzPushButton( VBox );  w.pp2.maxWidth = 200;  w.pp2.whatsThis = "PP2 file path and file name";  connect( w.pp2, "clicked()", openPP2 );  w.pp2.text = trim( setup.pp2 );    label = new DzLabel( VBox );  label.text = "OBJ:";  label.maxWidth = 20;    w.obj = new DzPushButton( VBox );  w.obj.text = "DzLineEdit Highlighted";  w.obj.maxWidth = 200;  w.obj.whatsThis = "OBJ file path and file name";  connect( w.obj, "clicked()", openOBJ );  w.obj.text = trim( setup.obj );    // Multi-object mode  w.mode = new DzVButtonGroup( w );  w.mode.title = "Child Nodes Stored as";  w.mode.columns = 3;    rb = new DzRadioButton( w.mode );  rb.text = "None";  rb.whatsThis = "Child nodes will be ignored";  rb = new DzRadioButton( w.mode );  rb.text = "Child";  rb.whatsThis = "Child nodes will be stored";  rb = new DzRadioButton( w.mode );  rb.text = "Weld";  rb.whatsThis = "Child nodes will be combined";  w.mode.selected = 1;  // Morphs mode  w.morph = new DzVButtonGroup( w );  w.morph.title = "Morphs saving method";  w.morph.columns = 3;    rb = new DzRadioButton( w.morph );  rb.text = "Ignore";  rb.whatsThis = "Morphs will be ignored";  rb = new DzRadioButton( w.morph );  rb.text = "Save";  rb.whatsThis = "Morphs will bee saved";  rb = new DzRadioButton( w.morph );  rb.text = "Apply";  rb.whatsThis = "Morphs will be applied before export";  w.morph.selected = 1;      // Transformation channels  var group = new DzVButtonGroup( w );  group.title = "Transformation Channels";  group.columns = 3;    w.pos = new DzCheckBox( group );  w.pos.text = "Position";  w.pos.whatsThis = "Position parameters will be stored";  w.rot = new DzCheckBox( group );  w.rot.text = "Rotation";  w.rot.whatsThis = "Rotation parameters will be stored";  w.scale = new DzCheckBox( group );  w.scale.text = "Scale";  w.scale.whatsThis = "Scale parameters will be stored";  w.scale.checked =1;    // Dialog buttons  var group = new DzGroupBox( w );  group.maxHeight = 35;  group.flat = true;    var layout = new DzGridLayout( group );  layout.margin = layout.spacing = 5;    var oHelpMgr   = App.getHelpMgr();  var oActionMgr = MainWindow.getActionMgr();  var oHelpAction = oActionMgr.findAction( "DzWhatsThisAction" );    // "What's This?" push button  var helpBtn = new DzPushButton( group );  helpBtn.pixmap = new Pixmap(    String( "%1/images/icons/whatsthissmallicon.png" )      .arg( App.getResourcesPath() ) );  helpBtn.clicked.connect( oHelpAction, "trigger()" );  helpBtn.whatsThis = oHelpMgr.getHelpString( "WhatsThis" );  layout.addWidget( helpBtn, 0, 0 );    // Stretch the column between the left and right sides  layout.setColStretch( 1,1 );    // Create the cancel push button  var b = new DzPushButton( group );  b.text = "Cancel";  b.minWidth = 80;  w.setRejectButton( b );  b.whatsThis = "Close this dialog";  layout.addWidget( b, 0, 2 );    // Create the accept push button  var b = new DzPushButton( group );  b.text = "Save";  b.minWidth = 80;  w.setAcceptButton( b );  b.whatsThis = "Save poser PP2";  layout.addWidget( b, 0, 3 );  return w;}function openPP2() {  var pp2 = FileDialog.doFileDialog( 0,    "Select PP2 file name", setup.pp2 , "Prop Files (*.pp2)" );  if ( pp2 ) {    setup.pp2 = pp2;    win.pp2.text = trim(pp2);  }}function openOBJ() {  var obj = FileDialog.doFileDialog( 0,    "Select OBJ file name", setup.obj , "Geometry Files (*.obj)" );  if ( obj ) {    setup.obj = obj;    win.obj.text = trim(obj);  }}function trim( pat ) {  if ( pat.length<23 ) { return pat; }  i = pat.findRev( "/", pat.length-20 );  pat = "..."+ pat.mid( i,50 );  return pat;}function loadSetup( w ) {  var r = new DzAppSettings("PP2ex");  if ( r.getIntValue("true")==0 ) { return; }   var path = r.getStringValue("pp2");  var dir = path.left( path.findRev("/")+1 );  setup.pp2 = dir + oNode.name +".pp2";  w.pp2.text = trim( setup.pp2 );   var path = r.getStringValue("obj");  var dir = path.left( path.findRev("/")+1 );  setup.obj = dir + oNode.name +".obj";  w.obj.text = trim( setup.obj );  w.mode.selected = r.getIntValue("mode");  w.morph.selected = r.getIntValue("morph");  w.pos.checked = r.getIntValue("pos");  w.rot.checked = r.getIntValue("rot");  w.scale.checked = r.getIntValue("scale");}function saveSetup( w ) {  var r = new DzAppSettings("PP2ex");  r.setIntValue("true",1);  r.setStringValue( "pp2", setup.pp2 );  r.setStringValue( "obj", setup.obj );   setup.mode = w.mode.selected;  setup.morph = w.morph.selected;  setup.pos  = w.pos.checked;  setup.rot  = w.rot.checked;  setup.scale = w.scale.checked;  setup.single = setup.mode == 0 ? 1 : 0;  setup.weld  = setup.mode == 2 ? 1 : 0;  r.setIntValue( "mode", setup.mode );  r.setIntValue( "morph", setup.morph );  r.setIntValue( "pos", setup.pos );  r.setIntValue( "rot", setup.rot );   r.setIntValue( "scale", setup.scale );}//----eof----

     

    Post edited by Richard Haseltine on
  • SkirikiSkiriki Posts: 4,976
    edited December 1969

    Kyoto Kid said:
    Life is hell when you are on a fixed income and try to keep up with a hobby that keeps your sanity intact.

    Well... why not take a day-long break? You know, kick your feet up, cook something delicious from scratch (like cookies!), sample a beer, enjoy a bit of sunshine outside, imagine things you could put together in your virtual playground? I mean, I have been busy all week long, I got guests from Norway for the week, in a now-or-never sort of deal; a friend of mine came over and we agreed about it on last Sunday, so it was a really quick, impulsive sort of deal. And it has been fun! A definite break from normal stuff!

  • ps1borgps1borg Posts: 12,776
    edited December 1969

    Hey fabulous thx MFM :) Why not weld seams on object export, does it mean something other than welding verts?

  • M F MM F M Posts: 1,388
    edited September 2013

    ps1borg said:
    Hey fabulous thx MFM :) Why not weld seams on object export, does it mean something other than welding verts?

    <(^_^)... it's not really my work - originally the script was produced by JWAS84 and Duke533... I just cleaned up the material translation stuff to (hopefully) avoid crashing now when using it with newer shaders. I believe that ExportObj() stuff in the middle there was produced by Rob Whisenant (and nobody has been brave enough to touch it since -- "It works, don't fix it" (^_^)h).</p>

    I _think_ that option might be equivalent to the "Use Bone Welds" option on the OBJ exporter settings pane... and that appears to be only activated when exporting to Poser (there is, of course, no documentation for the DzObjExporter object...). Hmm... is it worth bringing that param out to the UI? or would it be better to just wait and see if anyone complains about it?

    Post edited by M F M on
  • kyoto kidkyoto kid Posts: 41,208
    edited September 2013

    Skiriki said:
    Kyoto Kid said:
    Life is hell when you are on a fixed income and try to keep up with a hobby that keeps your sanity intact.

    Well... why not take a day-long break? You know, kick your feet up, cook something delicious from scratch (like cookies!), sample a beer, enjoy a bit of sunshine outside, imagine things you could put together in your virtual playground? I mean, I have been busy all week long, I got guests from Norway for the week, in a now-or-never sort of deal; a friend of mine came over and we agreed about it on last Sunday, so it was a really quick, impulsive sort of deal. And it has been fun! A definite break from normal stuff!
    ...it's not working on scenes that has me bummed. It's having my (what I t feel are valid) opinions squashed that relate to my future in this hobby.

    the way it looks I spent almost 100$ in Carrara content during MM and the last few months and won't get to use it because I cannot afford the .5 upgrade that would let me use my Genesis developed characters.in scenes.

    ...and besides, it's going to rain like heck for the next two days so no point in going outside.

    Post edited by kyoto kid on
  • DanaTADanaTA Posts: 13,260
    edited December 1969

    Kyoto Kid said:
    Skiriki said:
    Kyoto Kid said:
    Life is hell when you are on a fixed income and try to keep up with a hobby that keeps your sanity intact.

    Well... why not take a day-long break? You know, kick your feet up, cook something delicious from scratch (like cookies!), sample a beer, enjoy a bit of sunshine outside, imagine things you could put together in your virtual playground? I mean, I have been busy all week long, I got guests from Norway for the week, in a now-or-never sort of deal; a friend of mine came over and we agreed about it on last Sunday, so it was a really quick, impulsive sort of deal. And it has been fun! A definite break from normal stuff!


    ...it's not working on scenes that has me bummed. It's having my (what I t feel are valid) opinions squashed that relate to my future in this hobby.

    ...and besides, it's going to rain like heck for the next two days so no point in going outside.

    Without knowing the particulars, I have to say that opinions get squashed here a lot, if they aren't in line with the status quo, if you know what I mean. It's why I don't often declare that opinion anymore. I got tired of being censored.

    Dana

  • SkirikiSkiriki Posts: 4,976
    edited December 1969

    Kyoto Kid said:
    ...it's not working on scenes that has me bummed. It's having my (what I t feel are valid) opinions squashed that relate to my future in this hobby.

    the way it looks I spent almost 100$ in Carrara content during MM and the last few months and won't get to use it because I cannot afford the .5 upgrade that would let me use my Genesis developed characters.in scenes.

    How much you're missing from being able to afford the upgrade?

    ...and besides, it's going to rain like heck for the next two days so no point in going outside.

    Well surely there's something to do indoors too?

  • M F MM F M Posts: 1,388
    edited December 1969

    Skiriki said:
    Kyoto Kid said:
    ...it's not working on scenes that has me bummed. It's having my (what I t feel are valid) opinions squashed that relate to my future in this hobby.

    the way it looks I spent almost 100$ in Carrara content during MM and the last few months and won't get to use it because I cannot afford the .5 upgrade that would let me use my Genesis developed characters.in scenes.

    How much you're missing from being able to afford the upgrade?
    Also would like to know - definitely don't want to see you go.

  • kyoto kidkyoto kid Posts: 41,208
    edited December 1969

    Skiriki said:
    Kyoto Kid said:
    ...it's not working on scenes that has me bummed. It's having my (what I t feel are valid) opinions squashed that relate to my future in this hobby.

    the way it looks I spent almost 100$ in Carrara content during MM and the last few months and won't get to use it because I cannot afford the .5 upgrade that would let me use my Genesis developed characters.in scenes.

    How much you're missing from being able to afford the upgrade?
    ...about 79.50$ as I didn't win anything in last month's challenges.


    ...and besides, it's going to rain like heck for the next two days so no point in going outside.

    Well surely there's something to do indoors too?


    ...yeah I have projects to work on. Just because I'm a little miffed doesn't mean I'm giving up on almost six years of investment in this. You just may have to go to my DA gallery to see it.
  • SpyroRueSpyroRue Posts: 5,020
    edited December 1969

    MFM Many thanks man!, I will be able to check it later on tonight... but right now I have a blank clean installed Daz 4.6. DIM is busy DL and Installing my new runtime. Has been for many hours now lol - It was long overdue tbh, I had two very messy runtimes, more then half of it was outdated and unassigned from DS 2.5-3.0 days and I deleted over 250 scene files! What delayed me doing all this was; I was naughty and had a third directory to the desktop (I know, I was Stupid) which had everything I customized, such as custom character/prop/clothing textures with all the WIP files and PSD's which severely impacted my PC performance.

    So I will indeed test your excellent script, but I literally cant for the time being.

    If in the meantime, anyone who uses/knows how to use PP2 Export scripts... MFM has been working very hard to update the PP2 export to allow the export of props using AoA SSS shader and HSS Shader, so if you'd be happy to test it while I cant, I'm sure MFM will be most appreciative :)

  • M F MM F M Posts: 1,388
    edited September 2013

    Read your PM KK.

    @Spyro - heh, no worries! ... basically, it should now crash less - hopefully not at all - for any particular shaders you care to use on the exported object. I've checked it with DAZ Studio Default, UberSurface, UberSurface2, UberHair (just in case), and AoA_Subsurface, as well as in DS-3.1.2 -- it may not necessarily produce anything particularly pretty, but it should still produce something. I'm definitely curious to hear of any crash conditions though (^_^)d.

    Post edited by M F M on
  • SpyroRueSpyroRue Posts: 5,020
    edited December 1969

    No probs man, I'll post my findings when DS is up and running again :cheese:

  • TJohnTJohn Posts: 11,214
    edited December 1969

    ps1borg said:
    Sunrise gave way to grey sky and gentle rain, warm enough to almost have evaporated by the time it hits the ground :)

    Sounds like the same weather we're having. Spring and Fall have much in common. :)
  • kyoto kidkyoto kid Posts: 41,208
    edited December 1969

    M F M said:
    Read your PM KK.

    ...got it.
This discussion has been closed.