Jump to content

Cairyn

Developer
  • Posts

    800
  • Joined

  • Last visited

  • Days Won

    18

Everything posted by Cairyn

  1. Note: This is only "random" insofar as you can paint a random transition pattern into the Range Mapper curve, which then repeats (but would you want true randomness anyway?). And it's not the same as controlling the light through its FCurve, as the color is set there as RGB and not HSV, which may not be the proper way to control the light. If you want true randomness, it becomes more complex, as you will still want the soft transition which means that you need to calculate the next target color in advance, so you can slowly change the hue towards that goal. That's actually something I don't know how to solve in XPresso, I would program a Python tag for that which at frame 0 randomizes the inbetween target hues and their timing, and then calculates a linear transition depending on the frame.
  2. The interesting part here is how you want the colors to change. The easiest way to solve it in XPresso would be to use a Random node in Vector mode and feed the result into the light's color, but this is fairly unsatisfying since the color would wildly jump all over the place. I assume you want a continuous color change with soft transitions. You could use a Noise to feed the Hue of a color, but while this guarantees soft transitions, the color would stay mainly around the noise's "center". You can influence that with some math, but it's still not optimal. Here's the most flexible way: Time node feeds its output (as Real) into a Range Mapper. The Range Mapper is set to Modulo, with Input Lower/Upper defining the time range (here: 0 and 5); Output Lower/Upper defining the color hue range (0 and 1), and the spline defining the transition between colors (here I use a sawtooth curve to cover all colors equally, but you can make it more interesting). The output goes into a Reals2Vector node as X (hue) value; the Y and Z values (brightness and saturation) can either be set as constants or get another input source. This is now a HSV format, so we use a Colorspace node to transform it into RGB which feeds the light's color. Done.
  3. C4D does store the visibility and the camera for a scene though? If you mean "several such settings" within one scene, yes, Takes are one answer, scene cameras are another (but the screenshot shows different scenes?). Also, there are selection objects (to group objects for later multiselect purposes to change visibility on the fly). And then there are filters and layers to change visibilities and group objects beyond the object tree hierarchy. And if you want a scene to reference external objects so you have several scenes with cameras and containers but only one master object each, then you may want to look into the XRef system.
  4. If you really want to do it with no object manager... Go to my Gumroad: https://cairyn.gumroad.com Download the free collection of selection scripts. There is one script called Object_Select_Parent. Put that on a keyboard shortcut. Now you can select one object in your group, and trigger the script (no need to have any visual representation of the group*), and you have the group selected. The advantage of that method is that you can go even higher in the hierarchy if your groups are nested a lot. There are other useful selection scripts in this collection. ----- * I assume you know that nulls DO have a visual representation in C4D, and you can change that via the attribute manager (Object -> Shape), so if you often need to select the same group, you can modify its null into some different, selectable shape in the viewport. You can switch off those representations via the viewport filter.
  5. PR was always difficult to handle, now with 3100andsomething volumes it'd be very hard to create a self-contained story that doesn't require reading tons of backstory. Unless you use NEO which might be more accessible and less outdated? Disclaimer: I stopped reading at vol. 2000, and never read NEO at all, and since they seem to have gotten rid of Dao-Lin H'ay I don't have any special reasons to get into the series again (except for asocially reading the synopsis at Real). But hey, here's a prototype for about 80% of the PR spaceships:
  6. Since we cannot construct "real" spaceships (let's face it, we haven't even sent a human to another planet), it would be fairly ridiculous to expect people to construct a functional level in their cinematic designs. If we need something that has a discernible function in a movie (landing gear, or airlock, or even just a pipe that breaks and sprays mist across the scene) we still need to model it manually. But for everything else, greebling is the way to go; can't have those huge smooth areas everywhere (even if, in the actual live action scene, Buck Rogers stands in front of a plywood set, it needs to be decorated to provide visual interest). Not just a scifi issue either: if I create a castle, I most certainly don't put a complete room behind each window, so the functionality is limited too, and the structure is defined by the visual impression, not by an actual building layout.
  7. I guess that is some global error, or the website code just doesn't check at all.
  8. Grabbing Octane data is not that difficult as long as the data is stored in the BaseContainer, e.g. like a tab in the Render Settings. That would be supported by the common C4D Python interface. However, if you need data from callbacks within the Octane render process, it's definitely more difficult... maybe even unsupported. First, there must be a supported callback at all - if Octane does not have that, then it can never work. Second, there may be only a C++ callback - allowing Python to be called within the render is yet another level of abstraction, as Python is not native code. And third, such a callback (be it C++, be it Python) needs to be made openly accessible and documented for third party developers. Maybe the best course of action would be to ask the Octane people (developers?) whether this usecase is even possible, and where to get the needed API. I can't comment as I don't have Octane, so I'm out.
  9. You don't. The tick and the two dots are completely different functionalities. The dots control the visibility, while the tick controls the activation. Therefore, only special classes of objects (e.g. Generators, but not polygon objects) have the tick, because only these can / need to be activated. Other classes (e.g. cameras) may have different functionalities in place of the tick.
  10. Did you put all of the render into the thread? If you start the render first (as you do in the above code) then it will lock of course. Threading does work with the standard render at least. I don't have Octane so I can't check how this behaves. It is indeed possible that Octane does not support the needed callbacks... or that you may need a specialized Octane API, which I don't know about. You asked the same question on PluginCafé; I suppose the people there may be better suited to help you since they have access to the sources. (Not sure how well they know Octane either, though!)
  11. Do not use CallCommand to start a render. Use c4d.documents.RenderDocument(doc, rdata, bmp, renderflags=0, th=None, prog=None, wprog=None) as you already have a thread of your own to prevent locking. The documentation for this command shows an extensive example how to use the provided callbacks to retrieve the current render information. (I'm not going to copy&paste that here.) https://developers.maxon.net/docs/Cinema4DPythonSDK/html/modules/c4d.documents/index.html?highlight=render#c4d.documents.RenderDocument ---------- Learn more about Python for C4D scripting: https://www.patreon.com/cairyn
  12. Cairyn

    Important Notice

    Hmm, I tried buying a Bronze Membership by subscribing, and then cancelling the subscription so the dubious agreement would be invalidated after a one-time payment. I got mails at first that the monies have been received, but then PayPal claimed by mail it had reversed the order, and now I have no idea whether any money was actually sent. Probably not, and now I look like an a-hole for getting back donations. Very confusing. I'll have another look at it tomorrow.
  13. Cairyn

    Important Notice

    I'm happy to give you five bucks, and I'm trying to, but I definitely am asked for a blanko permission by PayPal. It's in German so I'm going to translate it for you. (start quote, bold text by me) By clicking "Agree and pay" I confirm that I want to use (my legal bank account here) for all my current and future purchases with Core 4D Community. I authorize Core 4D Community to debit my PayPal account for these purchases, and I order PayPal to pay these amounts in my name. This way, I can pay faster because I don't have to log in for these sales. (end quote) There's more about money sources and revoking after that, but I rarely have larger sums on PayPal so these are pretty meaningless for the case. One may argue that "future purchases" only apply to this special subscription but that's not what the text says. As I said, no limits (on the sum), no restrictions (on the kind of purchases), no login, and I don't see any statement on prior notification either. Maybe it's what PayPal thinks appropriate, but if I click that button, my bank would indemnify me for gross negligence if anything happens. (Don't know what "Developer" status does, but my account now says "Limited" anyway...)
  14. Cairyn

    Important Notice

    When I try to pay, PayPal tells me that this is a subscription (which is a big no-no anyway), and I have to agree that Core4D is able to withdraw payments for any purchase made through this site, so I "dont need to" log in (haha). And my "preferred payment" is through my bank account. There is no limit for the booked sum mentioned, nor a way to cancel the subscription or revoke the permission (although PayPal probably allows this through their page), nor any restriction regarding the goods I'm supposed to have purchased. That effectively means: If you (or anyone who successfully manages to hack this site and pretend to PayPal that they're Core4D) want to withdraw any sum of money from my account, they can just pretend that I bought something and take that money, and PayPal would get it from my bank account. My two-factor authentication would be circumvented, I would not even get alerted of the booking until I notice it in my PayPal or bank account, and unless I can convince PayPal that this was not a real Core4D purchase, the money is gone. Even if the likelihood is small, there is no way I would sign such a blanko order. I would expect a one-time payment for exactly this timeframe and this sum.
  15. Cairyn

    Important Notice

    now why does Paypal wants to give 3Dcore full access to my bank account? No way!
  16. xrange needs to be range in Python 3 Effecteur Python linéaire à espacement régulier-2.c4d Didn't make any complicated tests with the thing, but it seems to work now. ---------- Learn more about Python for C4D scripting: https://www.patreon.com/cairyn
  17. You can get the selected points as c4d.BaseSelect through PointObject.GetPointS(self) However: Points by themselves do not have an angle! They are just vectors in the parent's coordinate system. This is different from e.g. Blender. If you mean "a point where the spline makes a turn of 90 degrees" things get much more difficult because you have to consider the direction of the tangents, and perhaps even the tangents of the adjacent points. You can use the helper function c4d.utils.CalcSplineTangent(offset, type, closed, pcnt, padr, tadr=None) to get the tangents of the spline in any "point" (warning: this works actually by offsets, not by the original spline points) so you can check whether the tangents make a turn of 90 degrees within a given interval. Depends on what you actually want to do. ---------- Learn more about Python for C4D scripting: https://www.patreon.com/cairyn
  18. The biggest issue of a "point" in C4D is that it has no unique persistent identifier. It's just a single vector somewhere in an array (so you can address it by its index). Changing the array means swapping around the indices, and since the vector data is neither unique nor persistent, you cannot rely on what index really contains which point. As a consequence, we need special code to keep track of a point when we want to assign additional data to a point, e.g. a vertex map. Every time the array of points change, data sets that contain additional data must also change accordingly. If that data set is a plugin, you may not even be able to observe and replicate the change. If we had an identifier that is unchangeable over the lifetime of the point, we could assign arbitrary data to the point, be it a floating point, a color information, a matrix for orientation, a symmetry guide, or whatever, which would be bound to the point invariably. (This is a purely theoretical observation. Identifiers require a huge amount of storage space and administration time, and they don't relieve the additional data set from the need to react (sometimes in a complex way) to things that happen to the original points; e.g. what will that data be if a point is newly generated? So I can't wholeheartedly say "we should have that", just mention the problem in itself...)
  19. Once (on a different forum) I dared to downvote someone. A day after, I found that this person had downvoted literally dozens of my posts, some of them a year old, with no connection even to the ongoing discussion, in an attempt to ruin my reputation. I had to complain with the moderators to remove those retaliatory negative points again. Without a neutral arbitrator and a complaint mechanism (and maybe with some bots involved) this can be a very dangerous option. Just sayin'.
  20. I don't know Houdini... so I guess you just cannot use the same method in C4D? (alternatively I'd take a Blender method) Nevertheless, regardless of the DCC app, I don't understand what's happening there, mathematically.
  21. I'm kinda stupid here, how does that actually work? I get the reference cone and its UV, but how do you "transfer" UV to something else, and how does this become a mesh again? Does this rely on new UV methods that are not in the R23 yet? No UV-fu, I have...
  22. And in the end, everything turns out to be stolen from some Pixar paper at Siggraph 🤣
  23. Cairyn

    Important Notice

    These options, in connection with the totally usual and normal webpage-hopping (that's what the web is, after all) make the biggest hurdle for any form of payment (or even payment system). See an obstacle, go somewhere else. That may even be such a triviality as getting an account for a hitherto-unknown site, since an account means you become traceable, in some cases your data is getting to be sold, and even in the best of cases it's one more password to remember. That may also be another point for topic-agnostic sites like Facebook: you have an account already, so the site becomes a go-to place where you could ask anything in any specialized group. Also Reddit - you already have an account there, so you might as well use it. etc There are ways out of the problem - tips, for example, will most likely benefit people that you "follow" somewhere or are a "fan" of, on some social media site. This is a person that you feel a connection with, not just an anonymous guy that answers one of your questions and whom you may never talk to again, so why bother tipping? Payment for a site requires something extra, something that you just can't get anywhere else (and actually need). That may be something concrete, like "get a Plugin-of-the-month here", or something abstract, like a huge range of coverage. If that's not there, it'll be like "a few people throw a few bucks together to keep their regular's table running", but it's unlikely that there will be growth.
  24. Cairyn

    Important Notice

    Desperately trying to scrounge together money for the rent (which is rising again, oh joy) because there are too few people actually interested in what you have to offer, while watching your savings dwindle for food and fuel and your retirement fund evaporating in face of a runaway inflation, all because you were foolish enough to give up your safe cushy job so you could actually keep the dog that was at your side for the last decade since she was a nine-week-old puppy? Hypothetically speaking.
  25. Cairyn

    Important Notice

    A forum relies on a social contract, where you gain standing by being helpful, knowledgeable, and frequently seen. This is even supported by the mechanisms of "like" buttons, badges, extra achievement points, marked solutions, showing the number of posts, etc. All of this encourages (not "forces", but still...) people to participate in this social contract. Clearly, you can just passively read, or shitpost, or self-advertise through a gallery, or even enter just for asking a question and then leave forever, as many people do (I don't remember the total membership numbers on this forum but I seem to see the same faces day after day so how many active, recurrent users are there?). But ultimately that is not what keeps a forum alive, nor what keeps a forum a community. I do see that it is extremely difficult to finance a forum these days, just for the technical costs, not to speak of the time and effort going into the maintenance and moderation. But fact is, about everyone here has a point. The internet culture (using the word in a neutral way) has developed a "free beer mentality" which makes it extremely difficult to host editorial content (provided by a staff, e.g. journalism), curated content (provided by users but directed and moderated by staff, e.g. this forum here), and even social content (provided by users with minimized influence by the hoster, e.g. Twitter). There is no commonly accepted internet financing system, which has led to the advertising wars (more ads, more intrusive ads, popup ads, malware ads -- with the result that a user is forced to block ads for security reasons, and on the other hand ads are hardly bringing any revenue) and to a plethora of paywalls, legal money grabs, begging schemes, paid memberships, cross financing (e.g. through merchandize), donation drives, and sponsorships. This is a very complicated situation because there is no one-stop shop in the internet; the user is site-hopping and accustomed to a plethora of offers each of which can only fulfill a fraction of their requirements/needs. Don't get me wrong, I am all for a paid support on sites that are personally central, often-used, and relevant for my interests, as long as it improves the quality and allows the hoster to go without ads or selling my data for peanuts. But it needs to be done in a way that does not create a huge inequality between users, because that creates a culture of conflict between providers and leechers, or between professionals and funsters. There are many reasons that would make people join or abandon a platform; quite a challenge to go against the grain of common internet expectations.
×
×
  • Create New...

Copyright Core 4D © 2024 Powered by Invision Community