Recommended Posts

:) Can do.  I guess... what I do... is clone the BJS docs repo... into my personal docs repo... using the "fork" button. 

Later, you use the "compare" button, and then the "switch bases" and then "merge"... to "freshen" your personal docs repo... before you do further edits on any docs.  The BJS docs repo will get ahead in commits... while your docs repo sits idle for months.  This action will update YOUR repo... to be even-with the BJS docs repo.  In fact, your repo should report being one commit AHEAD-OF the BJS docs repo... after the "freshen".

I have been known to delete my old docs repo (gotta dig deep to find out how to do that)... then do a fresh "fork" at the BJS docs repo.... to give me a brand new fresh personal docs repo.  THEN I do editing, and pull request of my edits.  But the compare/switch-base/merge refreshing-method works good, too.

Then, wander into the CONTENT/EXTENSIONS folder (on your repo) and create your folder/document in there (using github markdown).

THEN, there is a file called statics.json in the DATA directory.  You must add an entry in there... for your new doc.  Follow established formatting conventions, and be careful not to mess with other things.  Precision is important, here.

Then do a pull request... and the edited statics.json and yourdoc... will be committed by some custodian.

Then, wait for the build.

The Table of Contents for your new doc... is generated during the build.  With github markdown (what you will write your doc in)... a #header is big black text, a ##header is semi-big/black, and a ###header is sort-of big/black.  The dynamic TOC ignores ####headersLikeThis... with four num-signs.

Rumor has it that there are slight differences between 'markdown' and 'github markdown', so when you go searching for markdown cheat sheets, make sure its 'github markdown'.

I think there might be online editors, as needed... with some helper buttons.

You CAN build the entire docs and docs website... on your home computer.  IF you decided to operate that way, you will be able to do your own docs builds and tour our entire docs website... on a localhost web server (thus see the TOC before official commit of your new doc).  But if you just follow the #, ##, ### rules for headers and indented headers, all should be fine.

If it takes a few docs builds to get your TOC right, what the heck?  I know the docs builders love doing builds.  ;)  (it's all automated - with static tutorials/docs marshalled by statics.json)  Know what grunt and gulp, are?  A docs build is a grunting and gulping festival.  I used-to do in-home builds, and you would not believe the amount of logging that comes across the screen... during a ~45-second build.  Its as if 10,000 programs went to work all at the same time, and they are ALL reporting every action they take.  Drool-worthy "batch" processing, for sure.

Maybe that will help get you rolling faster/easier.  I hope so. 

For the demo PG, maybe we should keep it more-simple than the worm crap I am trying.  sps.getMesh() can return us the mesh used for a word.  Then we can use my little animation funcs in lines 2-50 here... or similar createAndStartAnimation calls... on those word-mesh or sentence-mesh.  Simple fly-the-words-into-view stuff... would be impressive, but I guess we would want to show-off the X/Y rotation powers... because BJS GUI textBlocks don't allow that type of rotation (only z-rot).  If folks are simply flying flat-words around, might as well use GUI textBlocks.  It's not until we see your fonts' thickness... that your textMesh really shine and show their differences from GUI textBlocks.

Your textMesh (sorry, I sort of adopted that as the name, but feel free to call it anything, of course)... don't have a color-each-letter feature, unless we make a different Text object for each letter.  SO... maybe we could do some spotlight work in the demo... to make letters flash in sequence or something.  (move spotlight to front of letter, turn on in green for 1/10 sec, then move to next letter, turn on in red for 1/10 sec, etc... for some material effects).

Not sure, yet.  The specular light flash coming from tipping each letter... is pretty cool, too... but it's not jaw-dropping cool.  :)

Have you thought about the "write it vertical" option at all (and its vertical kerning issue.... space between letters)?  Do we have adjustable kerning at all?  Should we?  I need to study the properties on your newest version(s), yet.  I'm a bit behind... on the newest features.

How about "face direction" vector3?  Letters face the sky, or face -z, etc, etc?  Possible?  That complicates the kerning, as you must take the facingDirection into consids when calculating which axis is the kerning axis.  And, of course, if you allow writeVertical, that will need consids, too... as far as determining what direction the kern-spacing must be applied-to.  In other words, it will be possible that each kern-gap.... COULD be some amount of distance on two different axes.  If the word is written with an odd facingDirection vec3, then the kern space between letters (letter-spacing)... could be an odd angle as well.

This stuff is very new, so I don't know WHAT to consider or try to honor... for this baby.  For most of us, this is the first time we've ever been here.  :)  There's really no "best practices" established.  We are still discovering the best practices... on this one.  :)

Worms?  Now what little 6 year old girl wants to learn to read... with "worms" crawling all over the place?  But choo-choo trains... or dancing letters and words with music playing... that's all very inviting.  What's next... you want each word to come marching into the scene... dressed as a warrior, and each word decapitates little Suzie's avatar and guts and blood goes splashing all over?  Huh?  heh.  Maybe word bombs dropped from enemy bombers?  Sentences carried by inbound mortar rounds?   Do first graders in your town... wear Kevlar and combat gear?  :)  (Just havin' fun with ya, of course.)

Share this post


Link to post
Share on other sites

Thank you for the helpful comments.

I went with MeshWriter; this was partially influenced by your constant use of "mesh" in the name -- which is appropriate.  'text' means too many other things in the context, most of them not similar to this.  'glyph' is more on-point but is intimidating and hard-to-spell.

BTW, TextMesh sounds like TexMex when you are quite drunk.

Share this post


Link to post
Share on other sites

Should we call it letter-spacing?  Kern is a sucky word... sounds too much like "gout".  :)

Really, though, you need 3 axis kerning... and allowing negative kern values.

Let's say... for my vertical letters-on-a-rope... that I had a kerning of vec3(0, -40, 0)

That would cause each letter... to be 40 units below the previous letter (-40 Y), but directly under (0 X & 0 Z) the previous letter.

( I'm thinking about this with word facing z-looking cam. FacingDirection 0, 0, -1 )

The Z-value for the 3d kern setting... would HAVE TO take letter-thickness into consideration.  With me?

IF you used this method... there is no more reason for writeVertical.  Users could do it with the 3d kern feature.  And no reason for writeBackwards, either.  And, writeDiagonally is easy, too. 

We might see a time when there is textFacingDirection and letterFacingDirection.  For example, a textFacingDirection might be v3(.5, .5, .5) (seriously-diagonal word-write direction)... but if letterFacingDirection was something like v3(-.5, -.5, -.5), then each letter would be upright, un-rotated, and facing the z-looking cam... even though the entire word was written at a severe angle.  I have something incorrect, there... but... I think you understand what I seek.  If a word's facingDirection is an odd angle... then user MIGHT still want each letter... to be upright and un-rotated... for easy reading.  Not sure how to accomplish that feature.

All in all, (text)FacingDirection is still needed ... possibly an SPS-only thing, but the 3d kern must take its "rotation" into consideration.  Kerns are in text localspace, but the facingDirection is worldSpace... like the parent of 3d kern.  Does any of this make sense?  I could certainly rock a system that worked this way. 

Share this post


Link to post
Share on other sites

I think you and I have pegged the needle on opposite sides of the creativity scale.  I might steal.

Illuminated Cities are a rectangle floating on sky-texture.  Everything goes on the rectangle for now . . . except when I did this, (http://www.illuminated.city/mp4/BurglaryCategory.mp4) I rotated the date numbers for y'all to see them.  For me, a radical departure.  It then occurred the me that the "low wall" around the city rectangle could hold useful information.  I don't think I will try a circle but I am keeping it in mind.

In other news, Helvetica does not yet support single and double quote but I will add them.

Share this post


Link to post
Share on other sites

https://www.babylonjs-playground.com/#XWVXN9#53

Yay, finally got that chrome-like reflecto-shader fired-up on the text.  Coooool.  wheelPrecision and minZ set REAL LOW, so mousewheel-in and check out the hi-rez fractal-pic (refMap).

Slide-around with control-drag, of course.   Awfully danged pretty.  The texture MIGHT need a 50% uOffset or something.  More fractal patterns seen when text is viewed from ends... than when viewed head-on (after animation completes).  Panorama version #55 definitely has a texture mapping issue.  Still looks cool, though.  Studying.   #56 is nice, too... had to set the pivot point to boundingbox center. 

Note: sps.setParticles(); in line 142 area... is not-needed.  The setTimeout is unnecessary, too.  Only tmesh.material = shaderMaterial; is necessary.

Internet Explorer highly-dislikes this... ()=> ...in lines 170 &171.  So, here's a version that works for IE.  (I probably have some compatibility mode incorrectly set in my IE.)

Share this post


Link to post
Share on other sites

Updates:  More glyphs, including some non-English letters (e.g. ñ).   https://www.babylonjs-playground.com/#PL752W#6     meshwriter.min.js size is below 100K.  I will try to keep it there but we will see.

In review, fonts are:
    ~ Helvetica:  Default, efficient and most glyphs.  Use this one
    ~ HirukoPro:  'cause I use it
    ~ Comic:  just a couple letters right now
    ~ Jura:  I like it for numbers

Share this post


Link to post
Share on other sites

I agree! 

I've been thinking some more... about how to get a word/sentence... to follow a path3d/curve3d/whatever.

https://www.babylonjs-playground.com/#92EYG#30

I think this is a Jerome pg... it HAD JeromeGray background when I found it.   ;)

CatMulling.  :)  Some kind of phenomena... that makes squared corners... more rounded.

As you can see, my Lionel train track has some rotationAnimation problems about halfway-thru, and a little unwanted CatMulling at the "repeat" position (where start meets finish).

I'm not sure where/when "sentence following a path" would/could be used... but I still want to try it.  I welcome ideas/thoughts.  Later, we might try dumb path-finding things... like a path3D "engine" that can find/plot the least-mountainous route... across a heightMapped terrain (like a railroad planner might do).  Coooooool.  In many cases, the path3d need-not be a loop at all, so, the start/end "bump" issue is not overly important.

For now, I would like to remove/minimize the "bump" at start-finish location, and I would like to remove the "spastic spin" that happens... about half-way thru the loop.

To be truthful, I would like the cube to rotate around the blue normal ... slightly INWARD... on the turns.  This would be similar-to banked turns on a motor-speedway, and aircraft banked turns.

And wouldn't it be cool if the amount of banking.... was determined by both box forward speed, and angular severity of the turn (how tight).  Nice.  I have no idea how to do ANY of it.  :D  Possibly, leave-behind keyframe rotation animation, and instead... do a "live look-ahead".  The rotation "engine" is able to see the next 20-30 path3D points, and "derive" the amount of banking needed during a turn of THAT magnitude, at THAT speed.  Triple-cool!  Then later, we'll physics-joint-hang the text-letters from the bottoms of roller-coaster "nodes".  YEE HA!

I'm a bit off topic... because this is not really about meshWriter, but about how to fly-around a written mesh.  Oh well... punish me as needed... I sort-of like pain.

Share this post


Link to post
Share on other sites

When you have a hammer, problems look like nails.

I would like users to be able to move the Arc Rotate Camera focal point to different spots around the city.  To help communicate that, I needed a "focal point marker" to show the current point on the map.  I picked an anchor.  (Anyone with a better idea is hereby given the mic.)  Constructing a 3D anchor from an SVG rendering of an anchor turned out to be essentially the same exercise as creating a letter.  So, in a repetition of history, I created a new font family called "WebGL Dings"

https://www.babylonjs-playground.com/#PL752W#17

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.