Jump to content

VirtualKitten

Resident
  • Posts

    916
  • Joined

  • Last visited

Everything posted by VirtualKitten

  1. @Kyrah Abattoir no avatar cost 11L$ its to expensive for me at present the failure i have on import is on another thread .
  2. @Profaitchikenz Haiku Why would this be the case its a valid separator no its not used in note card just in passing string as am already using this | to separator and needed something else to use to distinguish. Why do you feel this might cause it to fail and duplicate all entries into 1 line please? The testing does not get much further than on one file notecard to get to play so i need to get first part repopulating list properly first . I went through acres of testing with this with a friendly person world they could not help or find an answer either using debug on readers and on senders find the reason for the error other than the add to list the data that made it it in to link list was formatted correctly and we could not find a reason . We could not identify why the link-message was not arriving infact the use of llSay(0,... to print to the console 0 made the whole thing not work even half as well dropping more messages than it had before. @Qie Niangao yes the play is in another file its not required as it works elsewhere from same list in previous project.
  3. Hi everyone I have this error on the log of Second life Mesh import from my project in blender 2.93.2: LOD3 Skinning disabled due to too many joints: 133, maximum: 110 LOD3 Skinning disabled due to too many joints: 133, maximum: 110 LOD3 Skinning disabled due to too many joints: 133, maximum: 110 in 2.79 blender there used to be a feature on export to remove bones not wanting to be exported by the model . Nothing I have tried so far gets passed this and I am hopeful somebody more advanced has the answers of how to work around this please the mesh boning is based on bento angel mesh 'angel_2017-01-09.blend' from the avastar site. Thank you for looking Denise X hugs
  4. Well it just doesn't work like the new 2,.93.2 Blender export to second life with rigging Its so verbose no information anywhere when you get message to many bones in log file Its broken period and how can it be code if it worked two days before that is rediculous
  5. I still don't have an answer how to get this completed if i save for the thing in world costing 11k lindens will this be of benefit to get this working please?
  6. @Mollmews I think you are forgetting we all learned to script this way , better not force anyone without RLA enabled in their viewer or nothing will happen most scripts like this rely on RLA but not many use it . You might be better with a http://wiki.secondlife.com/wiki/LlPushObject as it doesn't require RLA I have some success limited pushing in a circle but never finished it as got involved with other things
  7. @mollymews, I informed you it is not adding list to list but inserting the whole part of the second list as a list item. its quite bizarre. The code i quoted below should not do this ! Further more according to @Profaitchikenz Haiku it is not overrunning the receiver which is throttled to four currently . See posts above [Command] Reciever link message parts link_message(integer sender_num, integer num, string list_argument, key id) { list r = llParseString2List(list_argument, ["|"], [""]); list scrub = llParseString2List(llList2String(r,3),["/t"],[""]); if(num==-90) return; if(llList2String(r,0) == "A") {_active=1; return; } if( (65536-llGetUsedMemory())<kill_mem ) { doMemoryErr(); return;} if(llList2String(r,0) == "DSC"||llList2String(r,0) == "DSL") { if(llList2String(r,1) =="M") _sdm += scrub; else if(llList2String(r,1) =="L") _sdm_l += scrub; else if(llList2String(r,1) =="R") _sdm_r += scrub; else if(llList2String(r,1) =="B") _bpm += scrub; return; } else if(llList2String(r,0) == "DSS") { if( llGetListLength(_sdm)<2) { llOwnerSay("ERR 000010 - An Error occured reading library data. Please reset the Piano. Please ensure your note card contains at least two keys to sound files."); return;} SoundOne(); return; }
  8. @mollymews I tried in two regions our private region and a separate clean one specified by the excellent scripting site on LSL The exact same results seems like LSL to me, have you not read what its doing its bizarre!
  9. Well @Ela Talaj I think something is broken in LSL. Its a very good advanced script I cant claim i wrote ( here http://wiki.secondlife.com/wiki/AdvancedNotecardReader) I just tweaked for my purposes it from a free public domain published advance script reading model published on wiki. It worked for two days then quite coming up with useless rubbish so idk am none the wiser ~~~~~~~~~~~~~~ No point already writing something that is in public domain ~~~~~~~~~~~~~
  10. Data is represented in a notecard as Name= Hello.msu #Author= #MenuName= #Performer= #FileLength= 10.0 #LastFileLength= 10.0 #KeyLength= 15.0 #Genre= New Age #source= Piano Covers #Licence= #CoverPicture= [KEY HIDDEN] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] [MONO ACTUALKEY HIDDEN],[LEFT ACTUALKEY HIDDEN],[RIGHT ACTUALKEY HIDDEN],[Number representing BPM] It can also be seen from this screen capture below that the List2+=list is not working in fact populating list directly into line x of list2 whole as these should be single keys that are played on sound llPlaySound( as indicated by odd script warning , this is generated by some sort of failure in LSL? I do not know why it does this and can find no reason for this failure:
  11. @Profaitchikenz Haiku well thank you but its not sending 148 messages at a time as it is defendant on the slowness of the note cad reader which prevents this speed. Its not slamming this receiver it ques them in groups of four or more currently four as the link-message is not processing data in a list properly either . I have no clue why it does not do as described adding lists but it inserts the four in one line of the list .In regard to Link-message Que I believe as my data has a throttle it is sending 37 messages 148/4 = 37 if my math's is correct which it should cope with I reduced this to 3 above which should be 50 messages 148/3 which is 50 as the link message was not processing the list and adding the whole line not parsed into the list line so it is below your capacity limit as code is regulated by throttle here : if(llGetListLength(_dump)>3) { // llSay(0,"Got second read: "+(string)llList2CSV(_dump)); llMessageLinked(LINK_THIS,0,"DSC|M|"+(string)(k++)+"|"+llDumpList2String(_dump,"\t"),llGetKey()) ; _dump=[]; }
  12. Hi Everyone I am truly stuck and it seems like LSL is misbeaving. I have been writing an update on my piano to read notecard information through a data server script which provides this to a command script to play . I am not getting information passed through to link_message handler and it seems to be dropped by the server and the list addition of a list to an existing list does not add the information to the list . The information seems to be corrupted with keys which was assigned seperate list number going into a single list array line and not being populated in the list correctly from the addition of this second list. i am sending no more than 37x4 linked_messages as a stream from data server which does not seem able t harvest the data when ts dropped by server can you help or provide information as to what can be done to prevent this dropped information ii have inserrted llSpeep upto 5 seconds on each lllMessageLinked( reponse but this had no effect and does not respolve issues of adding list to gether failures. [Command] Reciever link message parts link_message(integer sender_num, integer num, string list_argument, key id) { list r = llParseString2List(list_argument, ["|"], [""]); list scrub = llParseString2List(llList2String(r,3),["/t"],[""]); if(num==-90) return; if(llList2String(r,0) == "A") {_active=1; return; } if( (65536-llGetUsedMemory())<kill_mem ) { doMemoryErr(); return;} if(llList2String(r,0) == "DSC"||llList2String(r,0) == "DSL") { if(llList2String(r,1) =="M") _sdm += scrub; else if(llList2String(r,1) =="L") _sdm_l += scrub; else if(llList2String(r,1) =="R") _sdm_r += scrub; else if(llList2String(r,1) =="B") _bpm += scrub; return; } else if(llList2String(r,0) == "DSS") { if( llGetListLength(_sdm)<2) { llOwnerSay("ERR 000010 - An Error occured reading library data. Please reset the Piano. Please ensure your note card contains at least two keys to sound files."); return;} SoundOne(); return; } [Dataserver code] //Datahandling string owner_display_name; string owner_name_query; list SEQ_LIB=[]; // %%% MAIN DATA. integer _debug=0; integer i; list cmd; // %%% all cmd configured list arg1; // %%% value for each cmd configured list arg2; // %%% a configurable parameter list arg3; // %%% a configurable parameter float set_text_alpha = 1; integer ConfigRequired = FALSE; // whether to fail if no config cards string ConfigNotecardSuffix = ".msu"; // string identifying config notecards float ConfigTimeout = 60.0; integer ConfigLineIndex; // line number in notecard we're reading key ConfigRequestID; // request we're waiting for list ConfigCards; // list of names of config notecards string ConfigCardName; // name of card being read integer ConfigCardIndex; // index of next card to read integer kill_mem = 500; // memory size must be available. string Commander_Name = "Commander"; integer limit = 900; integer data_read =0; list _dump=[]; list _dump_l=[]; list _dump_r = []; list _dump_bpm = []; integer k=0; integer sound_running_syncro =0; // Say something if debug is enabled debug(string str) { if (_debug) { llOwnerSay(llGetScriptName() + ": " + str); } } doMemoryErr (){ llOwnerSay("Error loading music cards *.msu. There is less than recomended " +(string)kill_mem +" (bytes) left of script memory. Aborting "); } Say2(string ieos) { llSetText(ieos+ "\n.", <0,1,0>, set_text_alpha); } config_init() { cmd = []; // data arg1 = []; arg2 = []; arg3 = []; } // print the configuration, handy for debugging. config_dump() { say("cmds: " + llList2CSV(cmd)); // %%% say("arg1: " + llList2CSV(arg1)); // %%% say("arg2: " + llList2CSV( arg2)); // %%% say("arg3: " + llList2CSV(arg1)); // %%% } config_parse(string str, string cardName, integer lineNum) { list scrub=[]; str = llStringTrim(str, STRING_TRIM_HEAD); // delete leading spaces // lines beginning with slash are comments -- ignore them if (llGetSubString(str,0,0) == "/") { return; } list ldata = llParseStringKeepNulls(str, ["="], [""]); if(!data_read) { cmd += llList2String(ldata,0); arg1 += llList2String(ldata,1); } else { scrub = llParseString2List(str,[","],[""]); _dump += llList2String(scrub,0); if(llGetListLength(_dump)>3) { // llSay(0,"Got second read: "+(string)llList2CSV(_dump)); llMessageLinked(LINK_THIS,0,"DSC|M|"+(string)(k++)+"|"+llDumpList2String(_dump,"\t"),llGetKey()) ; _dump=[]; } _dump_l += llList2String(scrub,1); if(llGetListLength(_dump_l)>3) { llMessageLinked(LINK_THIS,0,"DSC|L|"+(string)(k++)+"|"+llDumpList2String(_dump_l,"\t"),llGetKey()) ; _dump_l=[]; } _dump_r += llList2String(scrub,3); if(llGetListLength(_dump_r)>5) { llMessageLinked(LINK_THIS,0,"DSC|R|"+(string)(k++)+"|"+llDumpList2String(_dump_r,"\t"),llGetKey()) ; _dump_r=[]; } _dump_bpm += llList2String(scrub,3); if(llGetListLength(_dump_bpm)>10) { llMessageLinked(LINK_THIS,0,"DSC|B|"+(string)(k++)+"|"+llDumpList2String(_dump_bpm,"\t"),llGetKey()) ; _dump_bpm=[]; } /* llSay(0,"data0:"+(string)str); llSay(0,"scrub data:"+(string)llList2String(scrub,0)); llSay(0,"scrub data:"+(string)llList2String(scrub,1)); llSay(0,"scrub data:"+(string)llList2String(scrub,2)); llSay(0,"_dump data:"+(string)_dump); llSay(0,"_dump_l data:"+(string)_dump_l); llSay(0,"_dump_r data:"+(string)_dump_r); */ } } doM(){ llOwnerSay("Error loading music cards *.msu. There is less than recomended " +(string)kill_mem +" (bytes) left of script memory. Aborting "); } // Post-process single card config, if necessary config_done_single() { // Prcess MP3 Key end data in cmd /* llSay(0,"L _dump data:"+(string)_dump); llSay(0,"L _dump_l data:"+(string)_dump_l); llSay(0,"L _dump_r data:"+(string)_dump_r);*/ llMessageLinked(LINK_THIS,0,"DSL|M|"+(string)(k++)+"|"+llDumpList2String(_dump,"\t"),llGetKey()) ; llMessageLinked(LINK_THIS,0,"DSL|L|"+(string)(k++)+"|"+llDumpList2String(_dump_l,"\t"),llGetKey()) ; llMessageLinked(LINK_THIS,0,"DSL|R|"+(string)(k++)+"|"+llDumpList2String(_dump_r,"\t"),llGetKey()) ; llMessageLinked(LINK_THIS,0,"DSL|B|"+(string)(k++)+"|"+llDumpList2String(_dump_bpm,"\t"),llGetKey()) ; llMessageLinked(LINK_THIS,0,"DSS|",llGetKey()); say("Preparing to play."); } // Post-process any config, if necessary config_done() { if (_debug) { config_dump(); } if( !llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,TRUE);llSleep(0.1);} say("Config done"); } // ==== Utilities ==== // Say something, in this case to owner (%%% modify to whisper or whatever) say(string str) { llSetText(str+ "\n.", <0,1,0>, set_text_alpha); } // Get the next notecard name, and // return TRUE if there is one integer next_card() { if (ConfigCardIndex >= llGetListLength(ConfigCards)) { ConfigCards = []; return (FALSE); } ConfigLineIndex = 0; ConfigCardName = llList2String(ConfigCards, ConfigCardIndex); ConfigCardIndex++; ConfigRequestID = llGetNotecardLine(ConfigCardName, ConfigLineIndex); say("Reading " + ConfigCardName); return (TRUE); } default { state_entry() { SEQ_LIB=[]; if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} state s_config; } } // This state is only used to get into s_config, because going from // s_config to s_config won't redo it's state_entry. But we might // not want to redo anything we might have put in default state entry. state s_reconfig { state_entry() { if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llSleep(0.1); state s_config; } } // Read card config // Singe notecard version - read all cards with the given extension state s_config_single { state_entry() { // if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llSleep(0.1); config_init(); ConfigCards = []; _dump=[]; _dump_l=[]; _dump_r = []; _dump_bpm = []; k=0; data_read = 1; if(ConfigCardName==NULL_KEY) return; ConfigLineIndex =0; say("Reading " + ConfigCardName); ConfigRequestID = llGetNotecardLine(ConfigCardName, ++ConfigLineIndex); sound_running_syncro=0; } dataserver(key query_id, string data) { if (query_id == ConfigRequestID) { // llSay(0,"line:"+(string)ConfigLineIndex); if(ConfigLineIndex<24)// Pass header { ConfigRequestID = llGetNotecardLine(ConfigCardName, ++ConfigLineIndex); llSetTimerEvent(ConfigTimeout); } else if (data == EOF) { // Read header only of 8 lines. // Finish card if( (65536-llGetUsedMemory())>kill_mem ) { config_done_single(); config_init(); } else { doMemoryErr();} if (! next_card()) { config_done(); state s_active; } } else { config_parse(data, ConfigCardName, ConfigLineIndex); ConfigRequestID = llGetNotecardLine(ConfigCardName, ++ConfigLineIndex); llSetTimerEvent(ConfigTimeout); } } } } // Read card config // Multiple notecard version - read all cards with the given extension state s_config { state_entry() { if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llSleep(0.1); config_init(); data_read=0; string item; ConfigCards = []; integer n = llGetInventoryNumber(INVENTORY_NOTECARD); while (n-- > 0) { item = llGetInventoryName(INVENTORY_NOTECARD, n); // Note: for simplicity, read cards with the "suffix" anywhere in the name if (llSubStringIndex(item, ConfigNotecardSuffix) != -1) { ConfigCards += [item]; } } ConfigCardIndex = 0; if (next_card()) { llSetTimerEvent(ConfigTimeout); } else if (ConfigRequired) { say("Configuration notecard missing."); state s_configRetry; } else { state s_active; } } dataserver(key query_id, string data) { if (query_id == ConfigRequestID) { if (data == EOF ||ConfigLineIndex==9) { // Read header only of 8 lines. // Finish card if( (65536-llGetUsedMemory())>kill_mem ) { SEQ_LIB += (ConfigCardName+"/t"+ llDumpList2String(cmd,"|")+"/t"+llDumpList2String(arg1,"|")); config_init(); } else { doMemoryErr();} if (! next_card()) { config_done(); state s_active; } } else { config_parse(data, ConfigCardName, ConfigLineIndex); ConfigRequestID = llGetNotecardLine(ConfigCardName, ++ConfigLineIndex); llSetTimerEvent(ConfigTimeout); } } } timer() { say("Dataserver time out: touch to retry"); state s_configRetry; } on_rez(integer num) { state s_reconfig; } changed(integer change) { if (change & CHANGED_OWNER) { if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);}llResetScript(); } if (change & CHANGED_INVENTORY) { state s_reconfig; } } state_exit() { llSetTimerEvent(0); } } state s_configRetry { touch_start(integer tot) { if (llDetectedKey(0) == llGetOwner()) { state s_config; } } changed(integer change) { if (change & CHANGED_OWNER) {if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llResetScript(); } if (change & CHANGED_INVENTORY) { state s_reconfig; } } } // State to go into if notecard is required but missing. // You can delete this and the code above that refers to it, // or just set ConfigurationRequired to FALSE. state s_unconfigured { state_entry() { if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llSetText("Configuration missing", <1.0,1.0,1.0>, 1.0); } changed(integer change) { if (change & CHANGED_OWNER) {llSetScriptState(Commander_Name,FALSE); llResetScript(); } if (change & CHANGED_INVENTORY) { state s_reconfig; } } state_exit() { llSetText("", <1.0,1.0,1.0>, 1.0); } } // The fun starts here! Up and running. state s_active { // Every state should usually have this, or something like it. state_entry() { if( !llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,TRUE);llSleep(0.1);} for(i=0;i<llGetListLength(SEQ_LIB);) { _dump += llList2String(llParseString2List( llList2String(llParseString2List( llList2String(SEQ_LIB,i), ["/t"], []),2), ["|"], []),0); // Arg list Name [0]. i++; } llMessageLinked(LINK_SET,0,"L|"+llDumpList2String(_dump,"/t"),llGetKey()); // remember tab if sending message. llMessageLinked(llGetLinkNumber(),0,"A|",llGetKey()); llSetText("Piano score", <1.0,1.0,1.0>, 1.0); } changed(integer change) { if (change & CHANGED_OWNER) {if( llGetScriptState(Commander_Name)){llSetScriptState(Commander_Name,FALSE);llSleep(0.1);} llResetScript(); } if (change & CHANGED_INVENTORY) { state s_reconfig; } } link_message(integer sender_num, integer num, string list_argument, key id) { list r = llParseString2List(list_argument, ["|"], []); list _dump=[]; if(num == 0) return; if(llList2String(r,0) == "L") {// Lists songs for(i=0;i<llGetListLength(SEQ_LIB);) { _dump += llList2String(llParseString2List( llList2String(llParseString2List( llList2String(SEQ_LIB,i), ["/t"], []),2), ["|"], []),0); // Arg list Name [0]. i++; } llMessageLinked(LINK_SET,0,"L|"+llDumpList2String(_dump,"/t"),llGetKey()); // remember tab if sending message. } else if(llList2String(r,0) == "H") {// Get Song header _dump= llList2ListStrided( llParseString2List(llList2String(llParseString2List(llList2String(SEQ_LIB,llList2Integer(r,1)),["/t"], []),2),["|"],[]),0,8,1); //Just the Header Get line in ARG1[num] llMessageLinked(LINK_SET,0,"H|"+llDumpList2String(_dump,"/t"),llGetKey()); } else if(llList2String(r,0) == "M") {// Get Song Mono ConfigCardName= llList2String(r,2); ConfigCardName = llGetSubString(ConfigCardName,1,llStringLength(ConfigCardName)); // remove '#' state s_config_single; } else if (llList2String(r,0) == "RESET")llResetScript(); } }
  13. Hi @OptimoMaximo I tried to change the rigify bones to the same name as bento angel starting on the ring finger end mHandRing3Right I opened the outliner and could not edit the bones names or any useful properties. currently [outline data operation][Select|Deselect|Hide|Unhide|New Collection|paste Data Blocks|View[Show active|Show Heirachy|Show one Level hide One Level]]|Area[etc misc to change view]] This currently leaves no way to make this without creating or having the knowledge to create a skeleton from scratch its very poor please get it together second life and make this easier for others who are not as talented as the gods of riggers cant make things too. Thank you
  14. Oh well i removed the bones like i did in Rigify that I wasn't using it did not help either in fact it remained the same between object pose mode and not with edit mode . in fact restoring them with Shift + H did nothing to help, neither did deleing the bones I haven't used. Considering this is the default bent skeleton made for second life and am using 2.91.2 is this likely to be a fault in blender? or something else I did send @optimomaximo my blender file in world by a transfer program on line but have not heard anything so far.
  15. @OptimoMaximoHi again, I have been trying to think what I did with Rigify which was differant . I remember I deleted the bones, I was not using and with this bento one I was told to hide them. This consists of four feet and other facial lip and eye brow bone components not being currently used . Could these bones be the problem and how is best to remove them temporarirly or must they be deleted like when I rigged with Rigify? Thanks for looking. D. xD
  16. Hi @OptimoMaximo i send you my blender file in world by transfernow.com link its in your IM box now I would be grateful of your kindness if you could take a quick look and let me know what is wrong please ?
  17. When i try and make the automatic weights this completely disfigures the mesh entirely. I am going to try drop box blender file to you in world if you would be so kind to have a look
  18. Rigify bones are not the same bones as that from second life boning . I looked and they are all different presumably this is why they don't work . The Rigify rig was better than the bento one i have now but this has manifested another problem. This works in edit mode get bone alignment but clicking on anything else alters this pose it has not been automatic weighted as yet so why does clicking on part of mesh remove position of this to somewhere else . No one in groups had an answer: in object mode
  19. One last try I am going to rig these: Bento meshes: (without any warranty) Bento Female-2017-01-09 (.blend) Bento Female-2017-01-09 (.dae) Bento Angel-2017-01-09 (.blend) Bento Angel-2017-01-09 (.dae)
  20. @eiriesen you will find inkscape is superb and will do it as indicated but this can create high poly counts in mesh build which cannot import into Secondlife without a lot of work removing vectors and faces. Its far simpler to import an image in blender and use the tools to create box which you can exclude around a Bezier curve in the same way tree branches are made. if i was making this i would look at that as an example.as the Inscape can create high poly version. some illustration on how to work with Bezier curves can be found on youtube : extruding along a path this is quite cool
  21. Yes Sari6t this has happened to me its usually the model not been UV wrapped properly or the color tables are not created properly. The OP could try exporting parts to evaluate which part is wrong.
  22. @Medhue Simoni To be honest the consensus is to use Avastar and build from a flat image your mesh and follow a youtube video. if you create the mesh in blender you will need to rig it. Nothing i have tried in blender which has made a Linden Second life compatible armature. Even worse the ones you can buy on MP like mine are not as advertised at 3000L you don't own and they are not as described . I have spend two weeks or more scripting in Linden Scripting 1000 lines of script to run an Animesh on land and above ground . I started to learn about this using the Linden character toolkit however if you expect your animal to fly this will not work as character based Animesh cannot fly due to the pathfinding currently not working above ground. Your only option is to write routines for the Motion Animation routines to get it fly. I have wasted about a month with this to no end please see my other posts as I don't want you to have your expectancy high that this can be done without Avastar and spending a huge amount of money on that route . You should also be aware you cannot use blender 2.91.2 with avastar it is about 110 version improvements on blender 2.80 which I believe blender version 2.80 works with Avastar. I hope this helps but am sure its not what you want to hear. Kind Regards Denise
  23. @Molly To be frank if you are going to not make it easy for people to make animated mesh and animesh and some of your linden Market place sellers don't sell what they have described is on sale on Market Place for 3000L how are people using Secondlife going adopt Animesh and why should anyone bother spending weeks scripting for something that still has not become usable with clear rigging routes its very frustrating and to be honest not workable in practice ? Seriously if i bought an item on MP and i received order number and delivery I thought I owned it . Clearly this is no longer the case ! I am very disappointed in this and the waste of my time and hard effort i have put in just to have accomplished nothing! How can you learn something when the tools which are out there are either not available to expensive or to many that it is unclear why they don't work. Really Linden Labs needs to get a grip on this or they will become disillusioned with this Animesh like how i am becoming . I visited the Avastar in world store in world and didn't find much more than with the other rigging clients .Now how can i pay 11,000 L$ for just another avatar kit deployment like blenderbuddy to do this when two others don't work either . Will you refund my 11,000 L$ if it doesn't I doubt it . This is what it created
  24. @Molly I understand you say its not a monopoly but everyone I mean everyone has told me to use Avastar . This new Rigify bolt on to blender 2.92.1 with super slick youtube videos is just what everyone has been wanting to rig its much easier to use and gives good results quickly . The only draw back to all of your avastar suggestions is that Avastar is limited to the support for earlier versions of blender . I am not being harsh on Avastar as have never had option to use it . As clearly this is now becoming a new standard why has this not been dealt within export for exporting dae to Secondlife or why are these rigify armatures not using the correct naming conventions ?Linden really need to get a handle on this in second life as I expect with these new slick videos this will come up with this again.
×
×
  • Create New...