Jump to content

Abyss

Limited Member
  • Posts

    128
  • Joined

  • Last visited

Everything posted by Abyss

  1. Which CPU renderer is faster though? also it depends on the persons computer. some people dont have a great GPU.
  2. @Stuggz No i meant a field vertex map that controls the opacity of your Sketch and Toon lines.
  3. I think with fields you would definitely have control over it. where its to show up first etc. Also cel renderer might be a quicker option. And secondly it would probably be easier to do it in post like After Effects. maybe two render passes. one with the shaded main file and one with just the cracks. on top of it. You could then easily mask that crack pass layer in after effects and expend the mask during the animation. might be slightly more work not sure.
  4. I am also not that familiar with Sketch & Toon. but i noticed there is a opacity map option. So if you have R20, you could create vertex map on the Voronoi fracture (they even have prexisting vertexmaps, like outside faces, edges etc). And use fields to control the vertex map. Which would then in turn control the Sketch and Toon and when it shows up.
  5. Yeah I have done a lot of python tutorials and I feel I get most ofi t at this point. Well all the basics. Ive completed codeacademy and a lot more. But when you hop over to python for C4D. 90% of all that python knowledge is almost lost. well lets just say 70%. It feels knowing the C4D SDK documention and how it all works is about 70% and then all the python functions and syntaxes is only about 30%. If you want to change anything in C4D you really need to know where to look in the different c4d modules and which part and which function etc.
  6. Nice job Jed. love all your python stuff. Have been recently trying to learn it myself and its definitely so much fun and its interesting to be able to create things in Python. Its just a shame there is so little information out there. There are only a handful of people actually utilizing python in cinema it seems.
  7. It will work with Octane, since all the shader effector will do is tell you where the clones will be cloned on. And I am not sure but I think if clones arent visible they wont be computed. If you have a grid of 100 polys and each has its own clone. If you then say only have this one poly show its clone. thus ending up with 1 clone. I am pretty sure the other 99 that arent being used or shown will not factor in.
  8. this was my complete post: just assign that any part to a variable and then you can just check if that value is True ################## DATA_REGISTRY = [203,200,202,201] # any order print any((True for x in DATA_REGISTRY if x in OBJ_C)) _________ so something like this lst = [200,201,202,203,204] DATA_REGISTRY = any((True for x in lst if x in OBJ_C)) if DATA_REGISTRY is True: print "yay" else: print "nay"
  9. That's what I added underneath my last post you can also use this to find out which of the number in the list was found. for x in lst: if x in OBJ_C: print x
  10. DATA_REGISTRY = [203,200,202,201] # any order print any((True for x in DATA_REGISTRY if x in OBJ_C)) _________ so something like this lst = [200,201,202,203,204] DATA_REGISTRY = any((True for x in lst if x in OBJ_C)) if DATA_REGISTRY is True: print "yay" else: print "nay"
  11. Alright I guess you are right. That does indeed return a list of all the userdata not just the first one. And your next step is? you want to clear the remove the object from the object user data input? the object link. if the id is not 200. or if OBJ_C returns an empty list
  12. What exactly did you change in this one that does make it work? it basically is the same setup. I had only added an extra feature under try. To see if there is a user data present at all. With the script you added here you cant see that. You are looking for ID 200 and if that isnt there you simply have it return as failed. But then you dont know whether it failed because the user data number on the object isnt equal to 200 or that here is no user data at all or perhaps even a different error.
  13. What do you mean it only scans the first tuple? It doesnt . Do you mean it only scans the first the user data? You can easily fix that and have it scan the second if there is a second one or even third, fourth, fifth. If you want to check if an object with multiple user data inputs has any input with the id 200 . you can do that too. As it is now. it checks if the first user data input is equal to 200 and it also checks if there is a user data input at all. if not it will also return false
  14. Why not skip the selection tag step. and use your black and white texture in a shader effector to control where the clones should be visibile.
  15. @SolarPH Interesting. Well first of all to find out whats wrong you can print out what objlink.GetUserDataContainer() returns and print out what [c4d.ID_USERDATA,200] returns. They return different types. the first is a list of tuples and the other is a list of two numbers. That's why it is not working. What you can do is first to try and extract the number you are looking for in the list of tuples once you have that you extract the number from the list as well and then simply compare if they are the same. In this case you dont have the extract the number from the list since you know what value you are looking for. its 200. so you can simple compare the first extracted number to 200. Hope this all makes sense. Here is the code. it should work. def main(): objlinktemp = obj[c4d.ID_USERDATA,2] tup = objlinktemp.GetUserDataContainer() # returns list of tuples tup2 = [x[0] for x in tup] # returns the first tuple list tup3 = ([x[1] for x in tup2]) # returns the second tuple number which is the id while True: try: idnum = tup3[0].id #returns objects first userID number if idnum == 200: print "Success the object id 200" else: print "Failed the object id is not 200" break except IndexError: print "No user id input in the object" break
  16. I've added a setup in which it will change the color of the clone once it has been collided with. And it will stay that color. ChangeColor_Collision.c4d
  17. Well in your scene it is working too. However in your scene there is no collision. You are only colliding with the floor. You arent colliding the clones with each other. Which is what you have connected in both Object A and Object B. Throw an attractor in there so they all collide. Then you will see it works.
  18. Fairly simple with a Python node in Xpresso. What you are looking for is the "c4d.CheckIsRunning(c4d.CHECKISRUNNING_ANIMATIONRUNNING" command. Then its basically just an "if" statement with that command. Output a boole type in your enable or visibility input of what you want to hide. I have added a file. HideonPlay.c4d
  19. Looks great indeed. I didn't notice the glass bowls. The only thing that caught my eye a bit. are the intersections with the floor. especially the kitchen area. the wooden part for example it almost feels like its floating off the ground, maybe also the carpet.. Maybe more ambient occlusion would help?
  20. You can use the Math:Add node to hook them all up properly so they work simultaneseously. Which will mean that sliders with the same parameters. For instance the rotation in all three, will all be used as a mix. (slider 1's value + sliders 2 and 3) But if you only want the current "activated" slider to have control. What you can do is make dupes like you have done. And use the "On" port. Then have that On port which is a boole be controlled by a switch. And that control can simply be something like " if slider number three's value is more than 0 than produce an off on the switch". And have that switch go into the other two dupes where you have your other sliders hooked into. And that switch can be based off anything. Maybe you only want the slider to be active that has been pushed the furthest. then have that control the switch. you get the idea.
  21. Abyss

    Insert effector

    add this final line: cloner[c4d.ID_MG_MOTIONGENERATOR_EFFECTORLIST] = efflist
  22. yeah sorry it wasnt nessecarily in reply to his question, i figured you already figured that out. It was more my personal enquiry if a list can somehow be used in the collision node, which you can but its limited, .for certain purposes it would be useful, for instance changing a property of one of the collided objects when its being collided with. but for calucations and such, it seems you have to drag the objects in at some point. 4 is still easy but imagine having 200 objects. I guess thats where python comes in.
  23. Well apparently it does work, at least it does calculate the whole list you put in. Its just having issues with the output. Outputs wont read it. unless you output it again in a list. Collision-list.c4d
  24. any reason why that first setup didnt work.. the iterate - list - collision. Is there no way to feed multiple objects in the collision node object A slot?
  25. It should be able to handle 4 million polys, especially if its one object. if its multiple objects, C4D does slow down a lot. But your example is just one object. So I am not sure. You can try to put the object in a connect object. to force it to see it as one object. If that doesnt help, make sure that your Cinema 4d is allowed to use all your RAM and such.
×
×
  • Create New...

Copyright Core 4D © 2024 Powered by Invision Community