Jump to content

jed

Limited Member
  • Posts

    2,189
  • Joined

  • Last visited

  • Days Won

    66

Everything posted by jed

  1. I use a site called cpu benchmark where they list various cpu's 'power'. I've found their scores tally quite well with Cinebench and render times eg a chip that scores 10,000 will render a scene in approx half the time that a chip scoring 5,000 would take. The only reference I could find for Opteron 8378 was for a 2 cpu board - which they scored at 5,382 link. In comparison, a modern quad core Intel i7-7700K scores 12,145 link. Doing the math, your 4 Opterons have about 89% of the power of 1 quad core Intel. This is only theoretical, although I've read on CG Society that with multiple Xeons (more common) you don't always get 4X the render power with 4 cpus - usually a bit less. So your server board is almost as 'good' as a modern quad core i7. You don't say what OS it has. C4D R18 needs a minimum of Windows 7 SP1, which is probably the equivalent of Windows Server 2008 R2. If you're into old hardware, it might be an interesting project but personally I'd steer clear.
  2. Not sure how you would sort color - maybe by Hue from HSV. I just about understand colorspace in XPresso, but not in Python. When I've outputted a color from Python, it's just as c4d.Vector ie def main(): global color R, G, B = 0.75, 0.06, 0.8 color = c4d.Vector(R, G, B) print color.x, color.y, color.z # get RGB
  3. jed

    Rigging a V8 engine

    Since you are a new member, maybe you (or anyone else) don't know that Kiwi started this forum, and wrote tons of free tutorials. I learned most of my stuff from him. His piston constraint thing is quite inspired IMHO. IIRC, in his piston tutorial Kiwi jokes about the difficult math way to solve the piston problem - I took that as a challenge. That route is not too hard - just some sine, cosine and a bit of Pythagoras see pic
  4. Try this - new divider when box is multiple of 50. Cloner is moved on X to keep it centered. You should put XPresso and user data on their own nulls. https://www.dropbox.com/s/b1w3qwnhp131w6v/dividers.c4d?dl=1
  5. jed

    Rigging a V8 engine

    Scene is too complex for me to understand - was expecting 2 pistons, 2 conrods and 1 crankshaft. edit - this seems to work. I did a bit of axis centering and put each piston in a null at an angle. It seems to matter where the XPresso goes, so try either moving your XP in the OM or adjust the constraint priority. https://www.dropbox.com/s/qruhnkzvy7zdzo8/pistontest.c4d?dl=1
  6. jed

    The Tardis

    Needs a few Daleks
  7. There's some XPresso stuff in the forum tutorial section, also checkout Chris Schmidt at GreyscaleGorilla eg here. I made a couple of tutorials a while back about steering and driving dynamic cars using XPresso here.
  8. The points are global co-ords. I've been using XPresso for a few years, and you are correct - it does add an extra dimension to C4D. Once you've learned a bit of XPresso, the next step is Python . . .
  9. The point position ports are data type vector (XYZ), but you can 'intercept' the connection using vector2real, add on some offset, then convert back to vector using reals2vector. is this what you had in mind ?
  10. It's just a bit of math. Output lower is 1.14, output upper is 2.9 - these correspond to 0 and 1 on the RM Y axis. That leaves the 1.8 value, which is (1.8 - 1.14) / (2.9 - 1.14) = 0.66 / 1.76 = 0.375 so 0.375 on the RM Y axis corresponds to your 1.8 https://www.dropbox.com/s/mqkdy2psn2h16w5/rmapspline.c4d?dl=1 you'll have to tweak the spline handles to suit
  11. Just swap the objects around. You're going to get some distortion snapping mesh points to a spline - I reduced the number of segments in this plane In this file I disabled the XPresso, drew a spline 'up in the air', entered the mesh point IDs nearest the spline points, re-wired the XP and enabled it. Is this what you had in mind ? https://www.dropbox.com/s/qxoeo5qu2qaqehw/reviteratepoints.c4d?dl=1
  12. Can you be more specific - why not just use collision nodes ? re lambda in above script, It's a new one for me - still not sure how it works, but I also found a similar method itemgetter that can reference the 2nd element of a tuple as a search criteria. Need to import the module - import c4d from operator import itemgetter def main(): mylist.sort(key = itemgetter(1)) # ascending sort mylist.sort(key = itemgetter(1), reverse = True) # decending sort
  13. I think this works - not sure how, just pasted some code I found online. It takes the Y position of 5 cubes, sorts lo-hi and outputs the cube names as string. import c4d # sort cubes by Y position lo-hi # cube name output as string def main(): global Output1, Output2, Output3, Output4, Output5 mylist = [('cube1', Input1), ('cube2', Input2), ('cube3', Input3), ('cube4', Input4), ('cube5', Input5)] mylist.sort(key=lambda tup: tup[1]) # sort list of tuples by 2nd element lo-hi Output1 = mylist[0][0] Output2 = mylist[1][0] Output3 = mylist[2][0] Output4 = mylist[3][0] Output5 = mylist[4][0] https://www.dropbox.com/s/pip4h9g0ef40us8/mylist.c4d?dl=1 not very elegant, but some ideas for you.
  14. jed

    Simple xpresso question

    Rather than hierarchy, it might be simpler with an object list and a link list. In this snip the Object Index gets the index of each matrix (0, 1, 2 ...) then references a spline and connects it. The situation is a bit confusing because the specimen Matrix has 2 ports called object - one selects the object and one is the data field - so I renamed the 2nd.
  15. If it's only a couple of splines with a few points, you could iterate through a condition node with the mesh IDs as data. https://www.dropbox.com/s/e9y40dlolb3hews/iteratepoints.c4d?dl=1
  16. Not sure what you mean by connect, but if you wanted to move a spline point to the xyz of a mesh point using point nodes it would be where the point index ports reference the point ID numbers as per structure manager - 0 is 1st spline point etc. Problem is, the corresponding mesh points are not going to be 0, 1, 2 . . .
  17. I can't run your file due to not having the plugins, but things I'd try : lower bounce (maybe to 0), one collision per pair, use a compare > 0 on the count.
  18. You don't really expect me to understand what looks like 5,000 interconnected nodes ? If you really need to reference all those images with what seems to be sequential conditions ( == 2, ==3 etc) I suggest you use iteration. You could probably get the filenames with string concatenation.
  19. It's not very clear how you want to connect up the sliders in your scene. Maybe you could explain it a bit better and post a c4d file. You do realise that percent sliders are 0-1 decimal in XPresso ?
  20. XPresso is quite flexible with data eg an int or float '1' can be interpreted as a bool true or even the string character '1'. This can get you into sloppy habits that throws up errors when writing code eg Python is often quite strict with data types - I'd imagine COFFEE is also strict.
  21. I'm not a COFFEE user (I use Python), but AFAIK in some programming languages you have to declare variables before they can be used - int, float, bool etc. Maybe this is what the error message means. In Python, you just use vars without declaration. Switching between sliders (or whatever) in XPresso sounds like a job for the condition node, where the switch input selects which of the inputs is routed to the output. The default data type is real, but can be changed to almost anything eg color, material, object etc.
  22. Python has a ton of string formatting, here's a simple way to pad with '0' def main(): global X X = format(num, '.2f') X = X.zfill(6) 1st line rounds num to 2 decimal places and converts to string, with any trailing zero(s) 2nd line pads string from left with zero to max length 6 chars incl decimal point so 2.5 outputs 002.50 etc https://www.dropbox.com/s/gluudv9bca3ndew/zeropy.c4d?dl=1
  23. There's a few ways, but here's my take, treating the number as a string. I used an XPresso preset to get 2 decimal places (with zeros), then used the string length to add the correct number of leading zeros. https://www.dropbox.com/s/ms77ebv9fmkpil1/zeros.c4d?dl=1
  24. maybe start a new thread on that
  25. I've just noticed you're on R14 - I'm on R18, but I don't know if this could make your Python act differently. I don't get this - are you checking for actual errors in the console ? empty lines don't seem to cause me any errors - look in console doc.SearchObject is designed to look for objects by name, if you really must have multiple objects with the same name you can use obj = doc.GetFirstObject() obj = doc.GetFirstObject().GetDown().GetNext() etc where down and next have same meanings as per iteration nodes (but this could break if you move stuff around). You can also link to an object in the hierarchy, and use down, next from there. Although I don't use it, I think op refers to the object a Python tag is on in the hierarchy ie if instead of using a XP Python node, you had all your code in a Python tag on a cube, op would be that cube. if the node input ports had different variable names, should be OK. I think I'd find it confusing having a lot of objects with the same name. I use C4D's renaming function and AutoRename from here to bulk name stuff eg thing.01, thing.02, thing.03 etc. The code thing is one of the buttons alongside Bold etc. Will read other questions and get back to you later.
×
×
  • Create New...