Jump to content

Tutorial Talk


Wingnut
 Share

Recommended Posts

  • 2 months later...

Hi gang!  Long time no Tutorial Talk, eh?  Well, we're back, dragging yet another talkie thread out of the mud hole.  :)

 

A couple of documents were recently added to the "General" tree-node at our new BabylonDocs website.  They are tables of quick-links to the most-used classes of BJS 1.14 and 2.0, and they have been made public by ME, without asking permission or approval or ANYTHING!

 

The audacity of it all!  How dare he?  Who does he think he is?  :)

 

(I can delete them as needed.  I have the power.)  :D

 

Anywhat... have a look, report or fix mistakes, make suggestions, and have a fine day!

 

http://babylondoc.azurewebsites.net/search.php?q=hotlist

Link to comment
Share on other sites

  • 1 month later...

Hey, welcome back to the never-ending Tutorial Talk thread!  YAY!

 

Ok geniuses, here's what I need.  An EASY way to create generic XML... from .ts files.

 

Recently, I staged a rather large hoopla to the BabylonDocs kids... yammering-on about how we could benefit from having (some of) our wiki tutorials... be in xml format.  This would empower us to use XSLt (a type of dom-tree filtering) to offer users multiple levels of documentation... gleaned from a single HUGE xml document.  "Everything you ever wanted to know about SCENE" was a document that I used in my dog and pony show to the BD kids.  (An example of how I could use XSLT to offer users 4 levels of docs for BABYLON.SCENE object.)

 

By using different XSL stylesheets... users could have "bare bones" info about Scene, or "medium level" - most-used methods and properties and small info about each. Then "high level" - shows all props and methods, and much more text about each.  Then "super high" which essentially dumps the entire Scene.xml database into a webpage (styled xml).

 

Well, this is a huge proposal, and really not plausible (at BabylonDocs) at this time.  But, that doesn't keep me from trying some XSLT experiments myself, and checking the plausibilty of building an all-encompassing Scene.xml file.  It would be "stocked" by everyone... with information about Scene...  all "hints" and "tips" included.  Anything that anyone ever said or learned about Scene... goes into this master file.  After that... we use XSL stylesheets to "filter it" (at browse-time and done BY the browser)... per the search-type wanted.  The viewed webpage (styled xml) is derived differently, depending upon which XSL stylesheet is applied to the master xml doc.  (sorry for the over-explaining)

 

This system is NOT for doing searches for one select property or method.  Instead, this is a system that ALLOWS the soon-to-be-famous "Everything You Ever Wanted To Know About Scene" document... to be presented in numerous different ways.  Maybe even build your own XSL stylesheet to be applied during the transform (personalized dom-node gleaning-preferences).

 

Ok, I found js2xmlparser.js... installed it as a npm module.  It wants to be fed a JSON object, and I don't think it handles nodeJS streaming, but I just started investigating it, incompetently.  I'm not sure how to feed it or how to gather its output to a file.

 

NodeJS is SO new to me, that I just don't have the piping mastered yet.  If someone knows of some easy way to generate ANY xml/sgml FROM typescript files... feel free to do it (if you would), or help me learn how, and I would be MOST grateful.

 

Feel free to make xml of the entire BJS library.  :)  (.ts or .js only.  Current .md wiki docs/tutorials are another issue.)

 

Any help would be most appreciated.  All comments, welcome, as always.  Has anyone ever used XSLT to provide different versions of a single xml doc?  Got war stories?  Let's hear 'em.  (thx)

Link to comment
Share on other sites

  • 5 weeks later...

Hi gang!

 

hehe.  The response to that post... is ear-shattering!  :)  Oh well.  Moving on.

 

Today I want to add some notes to our Materials and Advanced Texturing tutorials... regarding imported mesh.  A friendly user who was working with video, noticed that no UV's were exported from modellers... when a mesh is exported without a texture. 

 

He/she was exporting a material-less, texture-less plane from Blender or Max, and then trying to put a videoTexture on it, locally.  It had no UV's and he/she needed to add them before the video mapped onto the object correctly.  No big deal, but I wanted to put a note about that... in our docs.

 

My question is... does the same happen for lighting normals?  If a mesh is exported from Blender with no lights involved, does the mesh arrive at the BJS scene without normals?  I suspect that they contain normals, or else they would not be seen when they arrive into the BJS scene.  But, I want to make sure.  If anyone can answer this easily, that would be great!  Any other information on this topic is certainly welcomed, too.

 

Please pardon my lack of knowledge on this subject.  I'm trying to fix that.  :)  Thanks!

Link to comment
Share on other sites

  • 1 month later...

Helloooo, Tutorial Talk!  :)

 

I just wanted to say that some EXCELLENT tutorial work is being done by various forum folk... THANKS, gang!

 

http://babylondoc.azurewebsites.net/page.php?p=25110

JohnK - nice work if that's yours.  Nice work, period.  Maybe name it 18. Advanced Transforms  ?  *shrug*

I didn't check, but also, would you please put a link in there... to the excellent thread that started it all? 

http://www.html5gamedevs.com/topic/14697-mis-understanding-rotations-and-translations-local-and-world/?p=83529

 

 

Jahow... we see you powering-up http://babylondoc.azurewebsites.net/page.php?p=22411 - nice work! 

 

Guys, both of your tutorials have common ground with each other... and that is fine... but neither of you has taught us about a very heavily-used thing... transformCoordinates().  I first learned about it here... http://www.html5gamedevs.com/topic/7985-babylonjs-tutorials-learn-by-creating-a-complete-game/?p=64281 (more about it in the post following), and deltakosh also showed it to me in a PM about the same time.

 

TransformCoordinates is hot hot hot, in my opinion.  It saved my flyer, and about 20 other projects I've tried.  It is a "pre-bake" thing, I suspect... so maybe, Jahow... would you consider teaching it somewhere near your baking stuff?  Is that a proper place?  JohnK's tutorial is already a little "busy".  :)

 

But... hmmm... maybe transformCoordinates is used SO often and SO powerful, that it deserves its very own tutorial/doc?  Maybe it needs a few (hundred)  examples of the many ways to use it?  What is "computing an UP vector/FORWARD vector"?  Why/How is it used?  What is mesh.definedFacingForward?  What are the mesh.xxxPOVxxx() functions for/about?  You know, the usual newbie questions.  :)

 

If we DO make a special transformCoordinates tutorial, then I think BOTH JohnK's transform-a-thon and Jahow's baking section... should have links to it.  I think it is highly pertinent to BOTH of your tutorials.  (but maybe more pertinent in Jahow's Bakery)   Thoughts, anyone?  thx!

 

Thanks again to you both, and to ALL the folks who are making our docs better by the minute!  Yay!!!  Party on!

Link to comment
Share on other sites

Haha you noticed :) I love the concept of collaborative documentation. Soon we'll be bigger than Wikipedia!! (... right?)

 

More seriously, there is indeed overlapping between the original 'How Rotations and Translations Work' advanced tutorial and JohnK's 'Position, Rotate, Translate and Spaces'. It's hard to decide what to do with it though: let it roll the way it is, clarify both titles to 'specialize' each tutorial, merge them...

 

Merging is probably uneasy, since they have different structures and topics. I hesitated a long time before choosing which one to expand with the baking part. Also JohnK's tutorial is very thorough in its own way, and also problem-solving oriented (many pictures and practical examples). I think a good thing would be to rename it along the line of: 'I'm struggling with rotation, translation, position and all that jazz. Please help.'. But in the end, this choice belongs to the great all-knowing curators, so I'll stop here.

 

About transformCoordinates: I'll look into adding it next to the baking stuff. Thanks for pointing that out :)

Link to comment
Share on other sites

Yeah, JohnK's thing sort of stands on its own, doesn't it?  It's a "package".

 

There's no need to merge anything.  We're glad to get the knowledge no matter WHERE it lands and no matter whose perspective.  Jahow, you're certainly free to start a brand new document... or many of them.  Don't worry a bit about where to put it... it can be stuffed in General or anywhere else you feel like putting things.  We can talk, and change it later, move stuff around, have a good ol' time.  And generally, curators don't set document names... but we sometimes suggest them, and we sometimes like to keep them as short as possible.  No problems.  If a curator accidentally makes a change that you don't want, just scream bloody murder, and we'll giggle at you fix the situation.

 

And, YOU don't necessarily have to write a section about transformCoords... ANYBODY can.  (hint hint to everyone, ahem)

 

Jahow... your mention of mesh.bakeTransformIntoVertices(matrix);  ...that is a transform and a bake... combined into one command, right?  Seems so.  Maybe you could show us the transform, then bake (2-step)... and then afterwards... show us the 2-in-1 version.  *shrug* 

 

Just thinking... not necessarily well. :)

Link to comment
Share on other sites

Well, bakeTransformIntoVertices is really just a "baking" operation, i.e. a direct modification of the vertices' positions & normals. There is no actual impact on the mesh's transform properties (rotation, translation, scale).

Link to comment
Share on other sites

@Wingnut JohnK here and on Babylon Docs are one and the same.

 

would you please put a link in there... to the excellent thread that started it all?

 

 

Quite happy to do that if you wish. However as I was slightly more confused when I started that thread than I am now and I just wonder if the thread might confuse rather than enlighten?

 

I am quite a simple minded creature and often have to have my hand held and shown things step by step in small bits and so when explaining I do go overboard in detail. Not everyone wants or needs the sort of detail I need so perhaps there are two audiences for the documentation. (OK probably many more than two but it must be difficult enough writing for one audience never mind more).

 

What I have in mind is something like Mozilla's documents on Javascript where there is a reference and a guide, so the How Rotations and Translations Work content would be in the reference section and Position, Rotate, Translate and Spaces content in the Guide.

 

On the other hand when you read the threads on the forum I see that most are asking questions way beyond the hand holding stage and so perhaps a reference is all that is needed.

 

Just read your thread on a flyer and transformCoordinates and now need to go and lie down in a dark room.

Link to comment
Share on other sites

Yeah, John, I can understand about the thread being less than concise.  :)  Your tutorial document says it better, doesn't it?

 

Guides and references.  I like that idea, but, hmm.  The line between the two gets blurred so easily.  I guess "guides" would be our tutorials and "references" would be our class docs.

 

It's rough.  We want to tell users about all the cool things in Animations or Particles, etc... but sometimes there are SO many cool things that the documentation gets ugly and then we bury the simple-ness, don't we?  We want to show users that it takes just 1-2 lines to turn-on a system, but then yappers like me say "and you should try this, and don't forget to try that, and twist THIS knob, and pull THAT lever, and and and"  sigh.

 

It's like the difference between Scene class API docs, and "Everything You Ever Wanted To Know About BJS Scene - For Mad Scientists"  :)

 

But I love your doc... it's way good, don't change a thing.  (unless you find a mistake, of course).  Thanks again!

Link to comment
Share on other sites

Continuing http://www.html5gamedevs.com/topic/15600-from-unity-to-babylon/ here... 

 

...I'm working on it (master playground list), guys.  I was offered a way to get-at the DB and grab some blobs-o-playgrounds, but I screwed it up.  Some trails I tried... had some rocks in them, and my Vespa scooter-o-knowledge refused to cooperate.  I'm still working on it... looking for excavators and fatter scooter tires.  :)

 

Temechon:  .md?  Really?  How 1940's.  No, we need birds singing, and each playground mini-rendered in an html <td>, and marquis, and dancing fonts... and and and...

 

pfft.  github markdown.  Mizewell watch Brave in black and white, eh?  ;)  (Love ya, brother, but its still fun to mud-roll ya!)

Link to comment
Share on other sites

Oh, wait, Temechon... are you saying that BabylonDocs uses the SAME DB as the playground, and that you could "generate" a list of all playgrounds... dynamically?  If that's what you're saying, I'm going to wash all that mud off-of you... right now... and spritz you with lilac juice.

Link to comment
Share on other sites

Hi!  Let's imagine we got the playgrounds, too.  :o

 

Let's imagine it is a giant collection, key: url, value: playground code 

 

ascii, json, serialized.  Anything but binary.

 

We could each take it home and build our own querying system. 

 

Speaking of forums, would it be easier to harvest all the playground urls out of the forum?  Is this hard to do, DK?

 

I think we'll find the number to be more like 2000.  But even if its 5000, I can search through 5000 playground records for 30 keywords each... in about... well... I have no idea.  But it would be less than an hour, even with JS regexp, I would suspect.  Feed the keyword hits to the tags metadata for that url... re-serialize the object to disk... and we're cookin' with propane, baby.  :/ 

 

A hand-around json object-o-playgrounds (and their originating urls).  yay!

 

Ideally, YOU massage the PGDB object first, DK.  Go thru and change all the scripts to point at a LOCAL /js... so folks who tour the JSON db at home, don't put load on the server.  AND, you could do the keyword search thru all the playgrounds, and stock each record's metadata (tags)... with found keywords.

 

After that, THEN offer the serialized object to the public to grab a zip-of... so they can include-in and search-thru it, and run local playgrounds, and steal code, and and and...  :)

 

Just grab it all, pack it up pretty, and set it on the loading dock.  :)  Watch us back-up our trucks to it.  heh

 

The real question is... why is this such a pain to accomplish?  Who cares what folks do with it... just get it to 'em and let the creativity blossom, right?  Get them as much data as possible, like maybe some dates... and code size.

 

Actually, I have NO experience with "big data wrangling", but I've seen some big fat flat ascii monsters, and I can roto-tiller through them like butter.  :)  Purina Tiller Chow!  Munchies for Mungers. 

 

*scratch scratch*  DK, if there's stuff we/I don't understand... tell us/me (if ya got time/want).  I'll back down if you think it would be wiser... but I'd like to understand why it's wiser to do so.

Link to comment
Share on other sites

Oh sure, Wingy puts his nads on the chopping block and throws a little fireworks show for the cause, and where are my fans?  (snorrrrrrrrre)  Hey, way to follow your issue leader into the dangerous forest, team!  haha

 

The silence is deafening!  :o

 

(Wingy dons his combat helmet and smiles toothlessly, knowing that he's in it alone, with poor odds.)  :)

Link to comment
Share on other sites

Could we add a function to give names and tags to the playground demos? then we sort them when we create new ones with the help of this information and just go trough the 100 000 step by step to some information if we feel like. And is it really 100 000? 100 000 base playgrounds (not considering the version numbers yet since I assume they more or less focus on the same topic)?

 

Then while we add tags to the playground a nightly cronjob goes trough the playgrounds and searches for the keywords from the tags. stuff like "moveWithCollsions", "physics", "particles"... if those words appear in a playground I guess we could add an automatic tag to this playground. users can then confirm or deny those tags if they some when  in a distant future check this playground out again.... maybe... something like that :P

Link to comment
Share on other sites

Wingy, let me make two points.

 

1. I have always been impressed with all of your demos - both the playground ones and those you have installed on your website. So I just felt that maybe a list could be created with all your stuff - I would be happy with that :)

 

2. I had not been thinking about all the playground demos but in terms of numbers:

 

    a.) The home page for these HTML fora says that there are 1764 topics and 15766 replies under BJS.- by database standards not huge. In addition, if I remember correctly, the BJS forum used to use jsfiddle for coding tests. Not sure when    the playground was introduced.

 

    b.) The drawback with searching for all playground examples is that some are examples of code that is not working - along with other examples of the fixed code. Not sure how those would be handled.

 

As I said above, I would be very happy with all the examples you have posted since I have been on this forum

 

cheers, gryff :)

Link to comment
Share on other sites

Aww, that's very kind of you, Gryff... I'm honored by your words.  But you are not the only one asking for a centralized list of playgrounds.  Many are. 

 

 

I think Deltakosh is wanting to provide a searchable interface to the current DB.  But how would I know?  He likes to "provide" for us, though... so I think he's reluctant to hand us something as crude as a big fat dumpObject.  heh. 

 

And then... there's Azure.  I'm not sure, but I think I see an interesting characteristic about Azure.  It loves data-in, and almost blatantly refuses to do data-out.  You send hard drives to Azure... to get data out.  How pathetic is that?

 

Originally, I wanted a web interface, too, where the public could try various queries against the playground DB.  But that might cost money and would be a bit dangerous.  Not much boss enthusiasm seen over that idea, either.

 

So, I am happy with a dump that I can regexp-attack on my own.  AND, I got time.  Lots of time.  I can hand-munge the wench, I've done far more tedious things in my life.

 

EX:  10,000 playgrounds, 5kbytes each... it's still a yawner.  I got Commodore Vic-20 BASIC that could munge THAT sized file (creating a stocked tags field for each playground/url)... in under a day!  :)   Hell, my dilapidated 1972 Snapper lawn tractor could even mow thru that!  :)

 

Sigh... I'm huffing and puffing a bit, but I need to keep my friend Deltakosh... liking me a little... cuz he's the key to success on this.  Maybe he can't see the value of having the playground DB as one big json serialization (a structured text file), and maybe that's where I am failing.  Maybe I have not yet convinced the boss of the usefulness of this.  Maybe I pissed him off with my little fun jabs that I do to him on the forum.  Maybe he's just plain sick of me.  I know I AM:D

 

I have been trying to leave him alone, so he can have max fun with his new family member.  I'm trying to take forum load off of him, I'm working on tutorials sometimes, I show'n'tell studies/experiments I do, and I try to get better at it each day.  But, you know, I can be annoying without even trying, too... so... hmm.  :)

 

I don't know what to say, or what kind of dog'n'pony show this is going to require.  But I never thought that trying to get a playground dump... would be more difficult... than figuring out what an Animatable is used-for.  :D   Party on!

Link to comment
Share on other sites

Update:  YAY!   I was able to re-read some instructions from DK and understand things better at Azure... and I think I can get the goods.  I am going to check on the dissemination polices (make sure I am not crossing anyone's rules/preferences) and then we'll see what can be done.

15674!

 

snippet.jpg

 

If all is cool for distribution policies, the zip will include all of these, in 3 file formats... .csv (38.8 MB), .json (36.8 MB), and .xml (40.6 MB).  All 3 files, zipped into one package, 8 MB.  Nice. 

 

Coooooooool.  I see the light at the end of the tunnel!  YAY!  (Wingy dances around a bit... it looks stupid)

 

All those PG's were highlighted, and see that delete button?  Holy crap!  Then I had to drive the mouse arrow around the area... so MS Snipping Tool could do the image grab!   At one point, my mouse was within 2 inches of ruining everyone's year!  (But not really, as I had already DL'd all three file types before I did the image grab.  Smart, huh?)  :)

Link to comment
Share on other sites

What about using the tags associated with a forum thread to classify the samples? For example, for a given thread with the tags "morphing", "shadows" and "animation", all PG references in it could have the same tags associated to them? That would be a first step.

 

I have no idea how to actually do this though...

 

EDIT: another idea: referencing as "solutions" the PG linked in posts marked as solved.

Link to comment
Share on other sites

Hi Jahow!  Umm... I doubt that many even used tags on forum posts.  I know I rarely do.   Even when I do, the chances that the PG demo tech features... match the forum post tags... is slim.

 

No, I think... hmm.   Maybe try it all.  Hopefully, everyone can have a copy, and just let everyone go crazy. 

 

Me, I want to search each PG for about 60 keywords (a one-time batch run), and for each keyword found in each PG, add that keyword to a tags array that gets attached to that record.  

 

Modify our own DB's... show it to others (in webpages or other apps)... see how we like them.

 

Mine will likely be a clickable 2-col web table with 15674 lines.  (url/keywords).  It will be a pre-processed single html file with no live-attachment to any db objects.  Control-f (standard browser search-this-page) to find keywords.  When I click the line, it launches the scene locally (from the local db), using local ./js/ folder. 

 

I may also experiment with applying some XSL style sheets and XSLT transforms... against the XML file.  (Let the browser format it and style it per my instructions - including adding/ignoring xml nodes at display-time).  That might be fun.  :)  XSLT is quite powerful... but few have played with it much.  I was forced-to, once in my life... but I was able to escape with my sanity. 

 

Maybe DK will zip-up the PG's scenes/ and textures/ folders for us, and I'll include that in the zip, too.  That way we can run these playgrounds completely local... no load on BJS server from "grand touring" of the PGdb.  But that's just me, and I'm not all that bright.  :)

 

PS: Jerome... we all know what you're thinking.  If you try to launch 15,674 BJS scenes on a single webpage... have a fire truck and ambulance standing-by, okay?  Yikes!  heh

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...