Jump to content
Hash, Inc. Forums


Hash Fellow
  • Content Count

  • Joined

  • Last visited

  • Days Won


robcat2075 last won the day on April 8

robcat2075 had the most liked content!

Community Reputation

283 Excellent

About robcat2075

  • Rank
    persistent smarty-pants

Contact Methods

  • Website URL

Profile Information

  • Name
    Robert Holmén
  • Status
  • Location
    Dallas, Texas

Previous Fields

  • A:M version
  • Hardware Platform
  • System Description
    Win 7 64-bit Q6600 2.4 GHz 8GBNVIDIA GT240
  • Self Assessment: Animation Skill
  • Self Assessment: Modeling Skill
  • Self Assessment: Rigging Skill
  • Programmer

Recent Profile Visitors

5,865 profile views
  1. That sounds cool. I presume that if Mac A:M users want to try this they will need to parallel install something earlier than Mojave. The last MacOs that ran A:M well was somewhat earlier.
  2. After some inquiries on the web it seems that it is normal and expected that if two objects are born of the same class, a method in one can see and access the "private" data in another. To me that seems like a giant loophole but no one questions it. In other news, the most recent update to Visual Studio seems to have added highlighting of escape sequences in strings. Notice how the "\t" ( for a tab) is a different color. A good reason to update.
  3. Prehistoric tutorial! (It's old!) Learn to use A:M's auto backup feature! I was working on a complicated Smart Skin today and had a crash. i hadn't saved my work in nearly half an hour... but A:M had made a save just two minutes earlier! That saved me a lot of rework.
  4. robcat2075

    Starship X

    The conventional rocket will be environmentally troublesome enough I imagine.
  5. Here's another C++ mystery. This class "Tuple" has x y z w as "private" variables that are only accessible to methods in an instance of this class. However, when the method "dotWith" is passed another Tuple as a parameter, it is able to directly access the x y z w in that other Tuple directly. // PublicPrivateTest_B.cpp #include <iostream> using namespace std; class Tuple { private: float x = 0; float y = 0; float z = 0; float w = 1; public: Tuple() {}; //custom constructor to load values upon creation... Tuple(float x, float y, float z, float w) { this->x = x; this->y = y; this->z = z; this->w = w; }; ~Tuple() {}; // one method to test them all float dotWith(Tuple otherTuple) { float dotProduct = this->x * otherTuple.x + this->y * otherTuple.y + this->z * otherTuple.z; /*why does the above line work, with direct calls to private data members of another object, like "otherTuple.x" ? I expected it to fail after I moved x y z w from "public" to "private"*/ return dotProduct; }; }; int main() { Tuple firstTuple(4, 3, 2, 1); Tuple secondTuple(5, 6, 7, 0); cout << "dot product: " << firstTuple.dotWith(secondTuple) << endl; //if uncommented,the direct call to x in the next line will fail, as expected... //cout<< "secondTuple.x: "<< secondTuple.x<<endl; return 0; }
  6. I'm sure it's probably hopeless. Why macOS Catalina is breaking so many apps, and what to do about it
  7. robcat2075


    It's hyp-mo-tizing!
  8. Thanks David. I'm most curious about why this pose fails when the others don't.
  9. J is still in beta. It's in the Real Close Now stage
  10. Can anyone explain this? This model has drop-on Poses made for common hand poses like fist, rest, hyper-extended... I made the Poses for the right hand then copy-paste mirrored them to another Pose to make the left-hand version. That worked for all of them except "Salute" Why do the bones not mirror correctly for that one? Loyd_031dx hand mirrorTests.prj
  11. A new Live Answer Time at Noon CDT Oct 12 2019 October 12 is the 98th birthday of Gumby creator Art Clokey.
  12. "Porky Pig's Feat" (1943) The whole cartoon is about trying to get out of paying a hotel bill.
  13. Week 16 Classes with getters and setters Here is an example of an class I made while going through the ray-tracing book. Ray tracing has lots of things described by locations in XYZ space, among which are "points" and "vectors". They can both be stored as an object called a "Tuple" which contains data members for X Y Z . It also has W which flags whether it is a point or a vector. There is a custom constructor that takes four parameter values to set X Y Z W values when the tuple is created. The setValues method takes the same four parameters but is called on a Tuple that already exists. This Tuple class also has methods for operating on its data. For example, a "dot product" of two tuples is something ray tracing wants. Instead of writing a function that needs six parameters (the X Y Z values for one Tuple and the XYZ for the second tuple), I make a method called dotWith in this class. Becasue it is in this class it will know the XYZ values for the current tuple and I can pass it an "other tuple" for the other XYZ values it needs to do the calculations. class Tuple { public: // data members, default values... float x = 0; float y = 0; float z = 0; float w = 1;// 1 make this a point, 0 makes this a vector; //constructors and deconstructors... Tuple(); Tuple(float x, float y, float z, float w); ~Tuple(); // methods... void setValues(float x, float y, float z, float w) float TupleOperation(char op, float x, float y, float z, float w); Tuple addedTo(Tuple addend); Tuple scaledBy(float); void printValues(string title); Tuple multiplyBy(Matrix4x4 transform); float dotWith(Tuple otherTuple);// returns Dot product Tuple subtract(Tuple otherTuple); private: }; The above is just the "declarations" The actual code that gets executed for the dotWith method looks like this, and is else where in the program file ... float Tuple::dotWith(Tuple otherTuple) { float dotProduct = this->x * otherTuple.x + this->y * otherTuple.y + this->z * otherTuple.z; return dotProduct; }
  • Create New...