Jump to content

Stickman Ingmann

Resident
  • Content Count

    66
  • Joined

  • Last visited

Community Reputation

5 Neutral

About Stickman Ingmann

  • Rank
    Advanced Member
  1. So me and several other avatars makers create non-standard "onion skinned" avatars. I've made dragons, gryphons, and wyverns. I'm working with someone who does horses. I have friends who make dinosaurs who use a similar method. In order to aid in customization of these creatures, it's common to have a "texture HUD." Select a body part, select a texture, and it gets applied. Pick a decal/tattoo layer, and apply some spots or stripes or a stocking or whatever. The system can get pretty fancy, allowing you to have certain patterns on legs or arms, and different patterns on wings and tails, etc. From what I understand of Bakes on Mesh, in order to use this new feature, it would be necessary for the consumer to manually apply textures from inventory, rather than using a HUD to layer and bake the textures. Is that correct? If it is, the Bakes on Mesh project asks the question: which is better? A texture HUD with preview images, or a series of folders with various named skins in them? I'd pick the texture HUD every time. So unless I'm mistaken, for now I'll be continuing my onion skinning designs, but hope to hear more developments soon!
  2. I'm new to the bakes on mesh project, and a scripter by trade. I know there must be some script functionality going on here because of the Omega HUD already on the market ( https://marketplace.secondlife.com/p/Bake-on-Mesh-skin-applier-Omega/14391590 ) But I cannot find any documentation regarding script-based mesh baking. Can anyone point me in the right direction?
  3. As has been noticed in the Jira, this problem has been resolved: https://status.secondlifegrid.net/incidents/yq8h2drwfypm Thanks to Whirly Fizzle for being on top of it.
  4. I, too, am having this problem. I made a bug report if people wanted to keep an eye on it. You can click "Watching" under the People tab on the right hand side to get an email notice when the bug report is changed in any way. Voting may also help bring attention to it. https://jira.secondlife.com/browse/BUG-202848
  5. I am very interested and excited in this feature. I'd like to thank Linden Lab for listening to input and working on this. I would like to argue against the lack of bone translation/positioning via animation. While it does have the traditional legitimate use of animating the facial bones (which rarely use simply rotation to animate the face), there are other non-traditional uses that it would be particularly potent and powerful for. Personally, I have been using "animation deformations," the changing of bone positions through the use of animations, in place of mesh skeleton deformations through mesh upload, because the mesh skeletons haven't always loaded to everyone looking at it, and it's much easier to automatically replay an animation than it is to rewear the object that sets the mesh skeleton. If LL does not desire unapproved use of this feature, I recommend communication. A good set of tools includes enough rope to hang yourself with. To continue a tool analogy, a nailgun is powerful and useful. Given to someone who doesn't know any better, it can be deadly. The trick here is education. Let us know how to use the tools, and if we're using the tools wrong, tell us how we're using them wrong, and why we shouldn't use them wrong. But don't remove the tool just because it's "dangerous." Second Life has lacked a proper "standards guide" since its inception, and this has resulted in some very wasteful and dangerous creations. However cool. Also, a source file for the new skeleton, or at least an explanation including all bone names and which bones are parents to which other bones so we can create our own would be desirable.
  6. Looking for ways to create what-you-see-is-what-you-get animations in SL. The only way to do this is by uploading .anim files, the SL internal animation format. I'm only familiar with two tools that aid with this. One is Zwagoth's number-editing tool, AnimMaker. https://code.google.com/p/par/downloads/detail?name=AnimMaker.zip The other is Avastar. http://blog.machinimatrix.org/avastar/ I know Daz3D is used as an SL tool, but I don't even know if it can do animations, let alone export .anim files. Are there any other anim related tools that anyone knows about? Thanks.
  7. Looking for ways to create what-you-see-is-what-you-get animations in SL. The only way to do this is by uploading .anim files, the SL internal animation format. I'm only familiar with two tools that aid with this. One is Zwagoth's number-editing tool, AnimMaker. https://code.google.com/p/par/downloads/detail?name=AnimMaker.zip The other is Avastar. http://blog.machinimatrix.org/avastar/ I know Daz3D is used as an SL tool, but I don't even know if it can do animations, let alone export .anim files. Are there any other anim related tools that anyone knows about? Thanks.
  8. Two methods come to mind. One is sending an email, which you can do if you know the UUID of the object. http://wiki.secondlife.com/wiki/LlEmail Note that it has a 20 second delay, and there is a limit to how many/fast you can send them. Note that email requires a way to receive the UUID in the first place. You can manually input it, but the object's UUID will change whenever it is rerezzed. Thus, while being fairly simple, this method has some hard-coded or less dynamic methods to it. Two is using the http functions. You can use llRequestURL to get a URL that the other object can access. http://wiki.secondlife.com/wiki/Category:LSL_HTTP For HTTP communications, you can use some sort of "LSL DNS" system, which requires an external server. There are some free ones set up that you could tap into, I believe. A quick serch shows this page: http://wiki.secondlife.com/wiki/Public_Object_DNS Which, if is not the answer, will lead you towards the answer. So HTTP can be entirely automated even after rerezzing things, but setting it up as such is way more involved than just sending an email. Hope that helps!
  9. "Name not defined in scope" means that the variable wasn't declared, or wasn't declared within the same event, or otherwise the same "scope." For example: touch_start(integer num) { if (num) { string s = "Two or more people touching!"; } llOwnerSay(s);} In this case, the string s is defined within the if block. The if block exits, s becomes undefined. Thus, this would get the error "name not defined in scope." A correct version is as follows: touch_start(integer num) { string s; if (num) { s = "Two or more people touching!"; } llOwnerSay(s);} In this case, it's defined before the block, and then assigned during, and used afterwards. Since it's defined within the "touch_start()" scope, it's within the same scope. Trying to use this variable in another event would require defining it as a global variable, before the state definition. Like so: integer i;default { touch_start(integer num) { i = i + 1; } on_rez(integer a) { llOwnerSay("We have been touched "+(string)i+" times."); }} Understanding scope and variable definition should help you resolve this problem.
  10. I like the part where he answered the question you asked.
  11. I recommend doing as suggested above. Rather than looping through the inventory each time, you can cache the values in two lists. When you get an on_rez()/state_entry(), loop through all animations and store them in each list, depending on the prefix. When you get a changed() with CHANGED_INVENTORY, clear the lists and cache them again. I assume you've got some sort of pagination working based on looping through inventory count. you can do the same except with your cached lists.
  12. You've got two sets of land permissions. One is region, one is parcel. I suspect the parcel is owned by someone else and they've restricted access. Try reclaiming it. Other than that, I can't guess. You could use SimConsole to disable pathfinding, but I'm pretty sure pathfinding isn't your problem here. http://wiki.secondlife.com/wiki/SimConsole Try contacting support.
  13. The wiki page mentions that some errors can happen during certain times of day. Could that be the problem? http://wiki.secondlife.com/wiki/LlHTTPRequest "Requests made at approx 0625 SLT may fail with a 503 status code, with "ERROR: The requested URL could not be retrieved", and "(111) Connection refused" in the body of the response. This has been confirmed as expected behaviour by Kelly, due to the nightly maint & log rotation. It does reliably impact object to object HTTP at that time, and quite probably may impact object to/from web around the same time. The interruption in service is fairly brief, and the precise timing may vary as LL adjust their nightly maint processes, or due to server load." Not familiar with the problem you describe, as I don't use the feature enough to encounter problems, but a workaround could be having the object ping its own URL with a request to see if it gets a response, and request a new URL if it doesn't.
  14. Not sure what you're asking for. Alpha swapping? Position changing? Alpha swapping could be like this: // Swaps prim alpha when flying/landingstring gsOpen = "open";string gsClosed = "closed";list glPrimCacheOpen;list glPrimCacheClosed;float gfTimer = 0.25; // Don't recommend lower.integer gbFlying;cachePrims() { glPrimCacheOpen = []; glPrimCacheClosed = []; integer x = llGetNumberOfPrims(); do { string sName = llGetLinkName(x); if (sName == gsOpen) { glPrimCacheOpen += [x]; } else if (sName == gsClosed) { glPrimCacheClosed += [x]; } } while (--x);}default { attach(key id) { if (id != NULL_KEY) { llSetTimerEvent(gfTimer); if (!llGetListLength(glPrimCacheOpen)) { cachePrims(); } } else { llSetTimerEvent(0.0); gbFlying = FALSE; } } timer() { integer i = llGetAgentInfo(llGetOwner()); if (i & AGENT_FLYING && !gbFlying) { gbFlying = TRUE; i = llGetListLength(glPrimCacheClosed); while (i--) { llSetLinkAlpha(i,0.0,ALL_SIDES); } i = llGetListLength(glPrimCacheOpen); while (i--) { llSetLinkAlpha(i,1.0,ALL_SIDES); } } else if (!(i & AGENT_FLYING) && gbFlying) { gbFlying = FALSE; i = llGetListLength(glPrimCacheOpen); while (i--) { llSetLinkAlpha(i,0.0,ALL_SIDES); } i = llGetListLength(glPrimCacheClosed); while (i--) { llSetLinkAlpha(i,1.0,ALL_SIDES); } } } changed(integer c) { if (c & CHANGED_LINK) { cachePrims(); } } } I wrote the script above without testing, so it may have a bug or two for you to work out. It compiles, though! The above script uses "prim caching" so it doesn't have to walk through the linkset every time. (which may not be a bad thing, needs benchmarking) It will only do that when it changed, or if there's no stored data (first wear). It also doesn't work except when worn, since that's always led to problems in everything I've worked on. Since it does use caching, and can only detect if the linkset changes, if you rename prims you'll need to manually reset the script for it to detect those changes. If you were changing the prims around when flying, physically relocating them, I would recommend storing the position, scale, and rotation values for each state in invisible hovertext and looping thought he linkset to change them. Seems like it'd use less script memory that way, as storing prim properties for two states of all prims could be real expensive on a high prim setup.
  15. The pin scripts are used for actually transferring running scripts between objects. That's a bit more complex than what you're looking to do, I'm sure. Sending a spoken message with llSay(), llWhisper(), llShout(), llRegionSay(), or llRegionSayTo() would be much simpler. I'm partial to llRegionSayTo(). In this case, you only need one object to hear what you're saying, so there's no reason to go broadcasting it into a radius. And when you llRezAtRoot() you get the object_rez() event, which tells you the key of what you just rezzed. On object_rez(key id) you'll want to have a llGetOwnerKey(id) == llGetOwner() to verify that the object actually rezzed, as it can be used to check for rez failure if the key is invalid. The wiki page probably has more about that, though it may only be listed as a jira bug link.
×
×
  • Create New...