[{"data":1,"prerenderedAt":239},["ShallowReactive",2],{"project-12736642":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":44,"post_text":46,"what":47,"said":68,"maker_in_thread":140,"shape":153,"grid":156,"attempts":200,"same_week":201,"maker_shows":32,"maker_hidden":231,"reader_version":232,"card":233},"12736642","collada-dae-parser","Skeletal Animation in Your Browser via Dual Quaternion Linear Blending","title","Show HN: Skeletal Animation in Your Browser via Dual Quaternion Linear Blending","http:\u002F\u002Fchinedufn.github.io\u002Fcollada-dae-parser\u002F","chinedufn.github.io","chinedufn",1476811034,2016,75,21,509,2264,23,"notable","games","skeletal animation demo","web_app",[24,25,26,27,28],"skeletal animation","dual quaternion","skinning","collada","webgl","curious",0.076,{"positive":32,"neutral":33,"mixed":34,"critical":35},3,7,0,1,11,{"design":38,"execution":39,"idea":40,"docs":41,"performance":43},{"positive":34,"critical":34},{"positive":34,"critical":35},{"positive":34,"critical":34},{"positive":42,"critical":34},2,{"positive":35,"critical":34},[32,34,32,34,32,34,32,34,32,32,34,34,45,34,45,34,32,34,35,34,45],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":59,"time_to_build":46,"stack":65,"openness":66,"stage":67,"team_size":67},{"value":49,"source":50,"evidence":51},"Skinning artifacts such as candy wrapper pinching when blending bone transforms","maker",[52,55],{"id":53,"by":11,"text":54},"12740259","So the problem with blending matrices is that you are not guaranteed to get a rigid transform (you might introduce scaling, for example). You are also not guaranteed to get the…",{"id":56,"by":57,"text":58},"12740233","corysama","Standard linear blending suffers from \"candy wrapper\" pinching. Dual quaternion blending is better at volume preservation.…",{"value":60,"source":50,"evidence":61},"Maker was using linear blend skinning and saw artifacts, then switched to dual quaternion skinning",[62],{"id":63,"by":11,"text":64},"12743173","Ah good question. So I was using linear blend skinning and had those horrid artifacts. Google.com told me that dual quaternion skinning was the solution, so more or less blindly…",[],"open_source","unknown",{"praise":69,"objections":89,"requests":97,"questions":116,"alternatives":130},[70,82],{"value":71,"source":72,"evidence":73},"Good explanation and demo with reference","commenter",[74,78],{"id":75,"by":76,"text":77},"12740844","notyourwork","Probably one of the best responses to that type of question. Explanation, reasoning for your decision along with a commit referenced to investigate further. Good stuff and great…",{"id":79,"by":80,"text":81},"12740658","Jasper_","Thank you for explaining, and for the reference!",{"value":83,"source":72,"evidence":84},"Smooth movement",[85],{"id":86,"by":87,"text":88},"12751630","sazers","Smooth movement anyway.",[90],{"value":91,"source":72,"evidence":92},"Browser error on load in Chrome",[93],{"id":94,"by":95,"text":96},"12741865","IanCal","I'm just getting an error in chrome > Uncaught TypeError: Cannot read property 'clearColor' of null I'll check back again later though, this sounds cool.",[98,105,109],{"value":99,"source":72,"evidence":100},"Mouse camera control",[101],{"id":102,"by":103,"text":104},"12738119","eriknstr","Neat demo. I have a couple of suggestions for camera control: 1. Allow the use of the mouse for camera control. 2. Use up\u002Fdown arrows for rotation similar to what you do with…",{"value":106,"source":72,"evidence":107},"Up\u002Fdown arrow rotation and separate zoom keys",[108],{"id":102,"by":103,"text":104},{"value":110,"source":72,"evidence":111},"Add optimized centers of rotation (OCR) skinning",[112],{"id":113,"by":114,"text":115},"12741284","santaclaus","Super cool! Any chance that you'll add OCR skinning [1]? It looks really cool, and seems to get the best of both linear blend and dual quaternion skinning! [1]…",[117,124],{"value":118,"source":72,"evidence":119},"Why dual quaternion skinning is not used more widely",[120],{"id":121,"by":122,"text":123},"12741174","pzone","Dual quaternion skinning seems to have failed to catch on. Support was removed from Unreal Engine for example. Why is this?",{"value":125,"source":72,"evidence":126},"Why not use standard matrix blending",[127],{"id":128,"by":80,"text":129},"12740089","Why not use the standard weighted matrix blending? What does the quaternion approach provide?",[131,136],{"value":132,"source":72,"evidence":133},"Linear blend skinning",[134,135],{"id":128,"by":80,"text":129},{"id":56,"by":57,"text":58},{"value":137,"source":72,"evidence":138},"Optimized centers of rotation skinning",[139],{"id":113,"by":114,"text":115},{"comments":141,"answered":142,"key":143},10,4,[144,147,150],{"id":145,"text":146},"12738622","Thanks! Ah yes great suggestions. Hastily threw the controls in a couple months ago and they're sure due for an update ( PR's welcome :) )",{"id":148,"text":149},"12740266","ha this calls for an obligatory \"PR's welcome :)\"",{"id":151,"text":152},"12743160","Thanks! So admittedly I only heard of DLB a few weeks ago, and OCR skinning 10 seconds ago :) But this looks pretty damn cool. Thank you so much for the link, I'm definitely…",{"commenters":36,"max_depth":142,"maker_replies":141,"first_comment_mins":154,"lifespan_hours":155},163,43,[157,159,161,164,166,168,170,172,174,175,176,179,181,183,185,186,188,191,193,195,198],[102,34,32,158,103,34],"project\u002Fneutral\u002Fdesign",[145,34,34,160,11,35],"maker\u002Fneutral\u002Fdesign",[162,34,32,158,163,34],"12738797","chombier",[148,34,34,165,11,35],"maker\u002Fneutral\u002Fnone",[113,35,32,167,114,34],"project\u002Fneutral\u002Fexecution",[151,35,34,169,11,35],"maker\u002Fpositive\u002Fidea",[121,42,32,171,122,34],"project\u002Fneutral\u002Fidea",[63,42,34,173,11,35],"maker\u002Fneutral\u002Fidea",[128,32,32,171,80,34],[56,32,32,171,57,34],[177,32,34,178,11,35],"12740265","maker\u002Fpositive\u002Fnone",[53,32,34,180,11,35],"project\u002Fpositive\u002Fidea",[79,32,45,182,80,34],"maker\u002Fpositive\u002Fdocs",[184,32,34,165,11,35],"12743215",[75,32,45,182,76,34],[187,32,34,165,11,35],"12743186",[189,32,32,167,190,34],"12741758","bendbro",[192,32,34,167,11,35],"12743213",[94,142,35,194,95,34],"project\u002Fcritical\u002Fexecution",[196,142,34,197,11,35],"12743177","maker\u002Fneutral\u002Fexecution",[86,45,45,199,87,34],"project\u002Fpositive\u002Fperformance",[],[202,207,212,217,222,226],{"id":203,"name":204,"points":205,"category":206},"12721709","I made a Chrome extension that helps battle impulsive procrastination",277,"productivity",{"id":208,"name":209,"points":210,"category":211},"12742395","Hawkpost",275,"security_privacy",{"id":213,"name":214,"points":215,"category":216},"12723281","CSS ICON",250,"dev_tools",{"id":218,"name":219,"points":220,"category":221},"12699767","Styled-components",172,"languages",{"id":223,"name":224,"points":225,"category":221},"12735665","Swip.js",152,{"id":227,"name":228,"points":229,"category":230},"12703679","Stack Match",136,"web_saas",false,"v2",{"id":234,"name":5,"line":6,"ai":231,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":235,"top":18,"kw":236,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":237,"url":9,"mix":238,"praise":71,"objection":91,"sub":21},12736642,0.08,[24,25,26,27,28],"303030303300505030105",[32,33,34,35],1794036548666]