Jump to content
Hash, Inc. Forums


Hash Fellow
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by robcat2075

  1. Prehistory was the age of long-necked beasts! Check out this Prehistoric rigging tip...
  2. When boning a long tail or neck it seems intuitive to match the bone joint to the spline ring. However, you'll probably get a more natural deformation if the spline ring is in the middle of the bone. PRJ you can play with... TailTest01.prj The top is spline-ring-at-the-joint. The bottom is spline-ring-at-the-middle... Tail Bones800.mp4
  3. tail-ended by a trilobite... Trilobite Fossils Show Conga Line Frozen for 480 Million Years I wonder what the trilobite is for "Are we there yet?"
  4. 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.
  5. 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.
  6. 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.
  7. 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; }
  8. I'm sure it's probably hopeless. Why macOS Catalina is breaking so many apps, and what to do about it
  9. Thanks David. I'm most curious about why this pose fails when the others don't.
  10. J is still in beta. It's in the Real Close Now stage
  11. 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
  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; }
  14. The most re I think the most recent zoom/position of each view is stored in the PRJ? They seem to be remembered when you load a PRJ? It is also possible to step through previous bird's eye views with shift-Alt-Y and Shift-Alt-Z (not saved with PRJ)
  15. Prehistoric tutorial! (It's old!) If you are working on a laptop without a numeric keypad or one of those newfangled tablets that has no keyboard at all... you need the onscreen numeric keypad to navigate the viewport!
  16. When I'm using the pen on my screen my hands are not conveniently located near keyboard anymore. i don't use the pen for A:M but if i were, navigating the views with the the numeric keypad would be the thing I would most want to have an on-screen version of.
  17. If you are trying to be all on-screen I think you need an onscreen replacement for... the Numeric Keypad!
  18. Petunia Pig's house is "streamline moderne" "Porky's Romance" (1937) "get Momma's pry bar..."
  19. Thing to remember to not do in Visual Studio... Do not try to copy and paste files from one "project" to another. It is not like copying and pasting files in Windows folders. After I had my project 31a Classes working (see below), it would have been convenient to copy the files from that source folder to the source folder for a new project 32a Classes data members and continue experimenting with new stuff. That only appears to work. The "copied" files are not copies, they seem to be merely aliases to the originals. Anything you change or rename in the new project will also be changed in the project they came from, probably breaking it and maddening to fix. Instead, after you "Add" a new project to your "Solution", "Add" new generic files with new names as stand-ins, then manually copy and paste the code from the windows of the old project to the windows of the new Project.
  20. How cool to see you back, Gorf! Since you are back... you might be interested in... Prehistoric!
  • Create New...