Jump to content

Beq Janus

  • Content Count

  • Joined

  • Last visited

Community Reputation

463 Excellent


About Beq Janus

  • Rank
    Advanced Member

Recent Profile Visitors

558 profile views
  1. It's one way to do it, and certainly not a bad way. The Medium LOD is typically the one that is visible to most of the people most of the time, as such it is worth making sure you get it right.
  2. Not saying that this is right or wrong but for something like the object here I would tend to do the following: for medium LOD remove all the horizontal surfaces, a few meters away when it drops to Medium those are too small to warrant inclusion. You need to be the judge of what can and can't be removed but be ruthless. for Low LOD, I'd drop to a single column, and have a fight with myself over whether it should be the thickness of the base and cap or the pillar, and probably settle on the pillar. In an object this simple though I'd probably decide I didn't care so much and leave the low and the medium as the same 24 triangle object. for the lowest LOD an 8 triangle box is going to be fine, but you could go the whole hog and use the 8 triangles in a cross (when seen from above) and then use an imposter texture, use the LOW/MED as the model for the imposter though so that the lowest is not showing detail that was not present in the preceding LOD. honestly though, making the viewer download a texture no matter how small, and carrying the extra triangle in the other LODs to support it, in this specific case is not (in my opinion) the right trade off and just go with the box.
  3. In time I revisit the uploader. those messages aren't from Firestorm, they are the mesh asset validation errors sent back from the server. They are put in the log because at present there is no simple route back to the mesh upload dialogue from the arbitrary callback that is triggered. It is not impossible to plumb them in but I've not looked into it. Ideally it could be something that @Vir Linden could sweep into the changes they are making. My reorganisation of the mesh uploader with the resizeable preview paves the way for more verbose messages there is space on the left if needed to place a scrollable widget with all the validation failures. I'm wary too though of making the uploader easier to abuse with poorly constructed mesh, every change we make should steer us towards fostering a better creation culture.
  4. OK, so....we're all kinda right. @animats is right that the viewer is able to generate mesh that the user is not (currently) allowed to upload, kind of. Yours truly is right that it is impossible to upload a mesh asset that does not have matching material counts for each LOD. @Aquila Kytori is on the right track, that the "unused" materials are assigned a placeholder. The placeholder is a single triangle of zero size. Which somewhere along the way must be decaying to a single vert in the export. I'm not inclined to chase that squirrel just yet. Here is what is happening at upload. I've documented the mesh asset format on my blog in the past, pulling in the, essential reading, prior art of @Drongle McMahon you can see my blog When is a triangle not a triangle for discussion and links off to other distractions. Skimming through I think it still holds true to what I know now (that was written before I was a viewer dev). The mesh header prefixes the model and defines the global parameters, including the set of materials to be used. That array of materials is fixed at the head and is thus why I can be so certain of my assertion that each LOD has to have a place holder array, without it, if material 6 was missing the viewer would see material 7 as 6, 8 as 7, and fall off the list looking for 8. The way we always deal with this as creators is to insert tiny single triangles to cover the missing material slots. My assumption (which I am about to prove incorrect) was that the viewer did that on upload if GLOD decided to eliminate a material entirely. In fact, the viewer does something a little unexpected, it creates a special placeholder label. 000005 [ ARRAY (8 elements) 000010 { MAP (len:1) 000025 Key:NoGeometry 000027 } 000032 { MAP (len:1) 000047 Key:NoGeometry 000049 } I've put a full annotated decoding of my 8 material plane (similar to the one Aquila used) https://pastebin.com/W7uN3UBu The entry of a key, with the string "NoGeometry" creates an entry in the mesh asset for that material, thus fulfilling my requirement above, there is no way for a user to create this themselves. So....that's all very good Beq but what about @Aquila Kytori's stray "vertices"? Well, that happens at the other end of the lifecycle. When the viewer is decoding a mesh asset ready to present it to the pipeline it faces a similar problem to the issue expressed before. You really really need to have actaul mesh to render or it would require all kinds of additional sanity checks and edge cases, so it creates some dummy geometry to act as a sentinel. Sentinels are a not uncommon way to simplify bounds checking. Software engineers may well have seen it in many algorithms, it is akin to an "Elephant in Cairo" Here is the viewer, placing its elephant: "It's a triangle Jim, but not as we know it" The viewer is creating a triangle composed of three indexes into the vertex array, each entry is set to 0, the vertex array is of length 1, and has coords (0,0,0) in the normalised mesh domain (-32768 - + 32767) i.e. the origin, for both positions and normals as well as 0,0 for the UV. Conclusion: We are all a little wiser than we were, I hope. There is indeed a path that the human creator cannot access, however, that path does not allow them to avoid the materials. The question is, how would the user access this? The viewer can do it because it "knows" which material it has eliminated and thus uses a placeholder. The placeholder is really no different to what we do manually, though arguably a little more compact. In order to do this in the manual case the viewer would need to be able to follow the unordered material lists through the discrete models and work out which ones were missing. It sounds doable, I effectively do this in my Blender Addon as shown here. The Addon (yep it will be up on github as soon as I get chance) has been used here to auto populate the Lower LODs from the original 8 material plane. I have then manually reassigned the materials on a couple of faces in the Lowest LOD in order to trigger the error shown. The "caution" marker is highlighting the fact that no geometry is present for the expected material in that model. I will have a "fix me" button at some point, which will create an arbitrary triangle, but if we can come up with a better solution that allows the uploader to recognise this without making it harder for users to debug their genuine material cockups. I need to think more about it and consider the inverted cases such as imposters where you effectively have a null material in the High, that acquires mesh data in the lower LODs. For the terminally curious, here's a short video of me fiddling with that in SLender (the Addon). Quite appropriately the video shows a bug at the end as the High LOD shouldn't have shown an error :-) https://i.gyazo.com/9950f318cd3d27fa36d1bf14e0a10b20.mp4
  5. I'll have a look at how it works when I get a chance. but yeah, as far as I can tell there is absolutely no way to upload a mesh without having at least one triangle per submesh (where a submesh is what we're calling material) what you are seeing as vertices are probably very tiny triangles is my guess. However, until I look that remains conjecture, so I'll take a peek when I can
  6. No, that Jira is nothing to do with material at all. It is to do with linksets and the fact that all but the root prim of an uplpoaded multipart mesh are called Object even though the scene file and the internal mesh held by the viewer retains the full label i.e. the same issue that you mentioned in the sentence I cited. The final upload to the server has no such label because it is not defined in the upload format, thus it cannot be fixed by the viewer alone.
  7. If you can find a mesh that reproduces this then I'll definitely dig into it. I don't believe it is the case because the internal mesh asset format has no way to deal with such an eventuality. I believe that at least one of the MAV missing level of detail messages is due to this. I will have a look when I get some spare cycles.
  8. I've tinkered a little with that, the principled BSDF should "in theory" get us some of the way if the PBR is explicitly avoided. splitting out and recombining is all doable. but the lighting is the hardest part I suspect. There is a Jira for that. https://jira.secondlife.com/browse/BUG-202864 The fix is not as simple as I first thought. The viewer has the information available to it, and it is in fact saved but there is no space for it in the upload format requiring a protocol/format change. I've added my suggestion to Liz's jira. That is a far tighter integration than any game engine I know of, even more than Unity or UE. The problem you have is that none of those tools are "game asset designers" they are one part of a chain of tools. You may start in ZBrush, move to a retopology tool, create a normal map bake down from the high poly to the retopologised HIGH LOD model, you take that map and perhaps a colour map out into substance painter. You probably upload the mesh (sans textures) and then use the local texture feature of the viewer to tweak the exports from substance to get something that looks right in SL. The fact that the uploader supports "textures" is increasingly quaint when materials ought to be being used to try to keep the vertex monster in check. Blender covers an increasingly large part of the spectrum well and for free and is probably far more common here in SL than in the wider "professional" market where Autodesk hold sway. (even more so if you only count the legitimately licensed versions of Autodesk products), I'd love to see Linden Lab as a corporate sponsor and perhaps get some directed effort towards shader and asset import limitations. (https://fund.blender.org/corporate-memberships/) Related, but separate and on my wishlist, is having a materials asset type. which contains a bundle of maps, and their settings, you'd then apply that to a face. I don't think that it has any real place in the mesh uploader though. unless you were to move to a full-blown asset importer.
  9. Firstly, feature requests should go in Jiras, so once this thread runs the usual course and we filter the trolls and wastrels stuff this into a Jira or set of Jiras, I'm al;ways happy to consider ideas and will contribute back to SL from FS once implemented, but the best place to put this might be LL Jira in the first instance. Taking your bugs in order. * What should the root prim be? The problem is that the DAE format has no concept of Root prim and thus there is no marker. Any toolchain specific encoding/ordering cannot be guaranteed, the uploader has to work for Maya, Blender, 3DS, etc etc etc They are read from an XML DOM there is no order guarantee I don't believe. If there is a way that makes sense and can be consistently enforced without breaking people's current workflows then I am happy to look at it. See below though that I don't think alpha sorting is the answer. * Texture upload works just fine. quick demo video https://i.gyazo.com/b6f284220b9039343f6ec34c661186d9.mp4 Result: https://gyazo.com/91e0acf145bba8869a7c3fa0a049ab13 * I don't believe your assertion is correct, though I am willing to be convinced. A subset should be allowed, but the uploader would still need to create a placeholder I believe. The internal mesh format requires the same number of slots. Each material is a separate drawable mesh, these are indexed into vector and thus If a mesh does not exist with at least one triangle in it then when the LOD switches the pipeline would have to deal with that. It doesn't. That does not mean it can't, just that it is not a simple alteration in the current state of things and the gain probably does not warrant the invasiveness of such a change. Feature request The root prim be the first in alpha ranking? Really? That makes little sense to me. Given that the object name is named after the root prim. The last thing I need is all my objects being called AAA_Object 🙂, in a complex build that actually makes it very hard to achieve. That said I've never found it to be a problem switching the link order so my pain threshold is different. What does the uploader do when the conglomeration of pieces is not linkable. I have frequently uploaded objects that are greater than the linkable range, it gives me a perfectly nice cluster of items. What behaviour would you expect here? Making the centre relative to the root is a whole different ball game. There is already a long-awaited change to allow arbitrary pivots, there are a number of issues that arise from that. IsIs the centre of the root prim going to be the new pivot? that is not a particularly useful state of affairs for people make single mesh items who have been waiting for the ability to define the pivot. Given the constraints that arise from the root of the object in terms of resolution it needs to be clear whether the pivot and the centre are the same thing (this is not of interest to linksets but may be important to single mesh) I agree that there are a lot of ways this could be improved and I'm happy to have a go at some that make sense to me and others, but we have to be very careful too. Whenever I have made changes in the past there have been others that want it reverted. The majority use case for uploading meshes is not complex multipart objects with textures pre-loaded. Having said that "what is the typical upload use case?" Beq
  10. Not sure asking here is going to get you an answer any better than a Jira might. The llerror module is straight from LL there are some performance optimisations but log usage is from the lab. The default SYSLOG setting is Critical but it seems to overload that with whatever your log setting is. So I guess "yes, it is on purpose" but I have no idea what that purpose was.
  11. it works fine in windows unless you have an RLV attachment that is deliberately blocking the hiding of HUDs (RLV allows this because blindfolds are often implemented as a HUD, and being able to hide it at will is rather pointless). My guess is that you probably have an RLV restriction in place. The easiest way to test is to full disable RLV relog and test. If you do not or cannot do this then you will need to look at the RLV restrictions panel In the following image I am wearing a HUD that I know locks my HUD disable ability. (Smart Striptease HUD), when the HUD is locked alt-shift-H will not work. When I unlock it alt-shift-H will work. You can see in this image that the HUD is locked and the detach restriction is in place. In the following animation, you can see that I can lock and unlock and the restriction comes and goes. When it is unlocked I am able to hide the HUD itself I cannot comment on Mac but on windows it works exactly as expected. I use it a lot when shooting movie footage if it didn't work I would be very quickly aware, so my best guess is that you have a detach restriction in place. Regards Beq
  12. The idea of that was nice. Impossible in practical terms but nice.I live underwater and have a moonpool entrance to my home, the entire illusion works only because of the way that the shaders work today, your mind able to exclude the water "fog" over short distances so you get the illusion that the space is filled with air. I suspect that with EEP that will be challenged and I'll have to rethink or have a custom setting.
  13. That was an ancient post and to all intents and purposes the invisiprim is dead and never expected to return. I completely agree that the use case in water in particular is well justified but having asked many times about this the answer is always "no, invisiprims are an abomination" so I would not expect to see it return. I am happy to lobby again and see what the answer is.
  14. The problems tend to stem from both server and client lag. You can't do anything much about the server lag, it is that which causes things like rubber banding where your position moves in jerks then resets itself etc. Client-side lag is a little more within your control but only a little. Given that you've tried lowering your settings etc I would look outside of the viewer and check whether you have things like virus scanners and malware protection that is repeatedly scanning over your cache folders. These can be a severe hit on performance and you should certainly ensure that your cache folders are whitelisted to any such software. There is also an increasing tendency for these products to provide "real-time" protection where they sit on the network connections and scan the incoming data. This has been known to cause problems with the viewer being able to efficiently fetch content. you may want to look at whether you can disable real-time protection (if you have it) for the viewer that you use or disable that feature while you are in SL. Think carefully though, closing down your defences is not something to take lightly.
  15. A shortish account of my 2.8 experiences so far. The giant troll at my Fantasy Faire build was entirely sculpted in Blender 2.8. In fact, without 2.8 he would probably have never come into existence. Hugh (as he became known) was my second ever sculpture (I use the word sculpture here because even though it sounds clumsy it avoids the fact that in SL the word sculpt has been polluted 🙂 ). My first was a little "snow fox" that I made in early Jan. I grabbed 2.8 to see how badly it broke my addons (the answer is completely) and to work out how I'd go about redesigning them. My Addons used the old layers system so they need to migrate to collections as well as some other changes. While I was there I thought I'd give sculpting a go, there was a "competition" to build a snowman/creature in New Babbage so I made a lumpy snowfox. It turned out OK. My artistic abilities are generally pretty woeful so "OK" was a step up 🙂 One of the problems I had though was Retopology, none of the decent retopo tools appear to have been migrated yet. (I need to check the latest status) The solution I found was to run both 2.79 and 2.80, you can then copy/paste between the two far more easily than attempting to export/import. I then retopologised it in 2.79. I decided to make sculpting in 2.8 my challenge for doing the Faire this year and thus Hugh was born. Because of his size, and the fact that he is effectively disposable, not for sale or general use, with judicious use of decimation tools I didn't need to worry too much about full on re-topology, keeping the polycount sensible was enough. Sensible, in this case, was more challenging than you'd think. On one hand, you have a vast mountain of a sculpture, so low resolution is where you want to be targetting, but at the same time people were going to be standing in his mouth (we hosted poetry and writing open mic sessions and readings/interviews with authors such as the award-winning SF and Fantasy author Elizabeth Bear, right inside the cavern that was Hugh's mouth. The installed Hugh (you can see him in my video linked on this thread in the Machinima forum) came in at about 300K triangles. Because of the scale, he had to be sliced up into SL-bite-size chunks of 64m, resulting in around 40 separate pieces, which also adds to the geometry of course. I wrote a custom 2.8 Addon tool for doing this and I will be releasing that at some point (once I make it safe for people other than me to fly it). I actually produced a single mesh version that retained the same UVs etc. and came in at a more respectable 32K triangles, again without "proper" re-topology tools just the judicious use of selective decimation tools. Sculpting in 2.8 with my Wacom tablet was brilliant, highly responsive to input, and intuitive enough for me to be comfortable. Not that you cannot exchange blend files back and forth. 2.8 will import 2.7 but it will convert them to use collections and will save them as such, this, of course, cannot be read by older versions. Conclusion Blender 2.8 is brilliant, don't wait for the "stable release", you can run it alongside your 2.79 if you want, but the "release" is not going to be a magical transformation from the nightly beta builds, it will be whatever the nightly build was on the day the seal the release. Things to consider:- Many of the larger, more complex add-ons are still being updated. You can often find a work in progress on the Addon's github page. all Addons should have a source repo available because Blender is GPL licensed (commercial add-ons exist but you are paying for the support in effect typically by supporting the author via gumroad or patreon) If you are not ready to migrate yet, you can ease your migration. Switch 2.79 over to left click select and retrain that muscle memory. I did this quite by chance last year because I was fed up with switching tools and clicking the wrong button. 2.79 works quite adequately with left mouse, it also makes using a wacom tablet easier as it happens. You can, of course, choose to run 2.8 with old-style right click too. Finally, for no reason than showing a silly image, me reading a human-scale (stone) book, laying on a stone book that is resting on a stone book that is..........
  • Create New...