The Leftover

Members
  • Content Count

    98
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by The Leftover

  1. Using the recommended CSG approach, the letters are clean and purty.
  2. Wingnut, you crack me up!! I am definitely thinking of flaming letter across the sky. Although flames might take a while. I already created a repository https://github.com/briantbutton/BabylonType, which is empty, except for good intentions. When progress is made, I will shoot a flare. We might be a little font- & glyph-impoverished for a while since automating importation is its own project. Each letter takes several minutes to get into Babylon-ready format. I will eventually automate importation if this gets popular. Image below shows the current approach, not CSG.
  3. Well sir, thank you. Especially for the bit about demonstrating the answer. I am learning at a hell of a rate. Today, CSG. Closing this.
  4. Can anyone explain what I am seeing here? https://www.babylonjs-playground.com/#PTTMVI#68 The polygon seems fine. The hole seems fine. When put together, a mystery occurs. I have been reversing and converting arrays until I am basically blind but I cannot shake this phenomenon. Lil help please!
  5. In Q&A, I had looked for help building a utility to dynamically generate polygon meshes in the form of text. Got some advice. Thank you Gijs. Here is a rough cut after a few more hours on it. https://www.babylonjs-playground.com/#PTTMVI#67 It seems that this can be done as a general tool with colors, sizes and multiple fonts -- not to mention a full alphabet. I need this for my own purposes. Not sure whether there is other demand for this. Comments solicited.
  6. As far as I can tell, it worked flawlessly first time. https://www.babylonjs-playground.com/#PTTMVI#63 I am closing this. Next up is to create a "font package" that will generate polygon meshes from letters.
  7. Gijs, thank you. Right on point and told me something I didn't know. I appreciate it. I had started with PolygonMeshBuilder long ago. My plan was that the text be a polygon mesh. It takes a Path2 but I don't know about a Curve3. I just saw your last post. Wow! It would be the way to go. Let me try to get my head around that. I will return.
  8. Like mightier folk before me, I have been trying to figure out how to put text into the 3-D Babylon world. Not unlike the thread at bottom. It would be best it was dynamic, not a fixed pre-setup, yeah? One can do this in SVG with a little help from OpenType.js . . . and Text-To-SVG, which uses it. If you look at a couple of glyphs (https://opentype.js.org/glyph-inspector.html) you may quickly conclude that one could put them in a BABYLON Path2, then into a polygon and we are off and running. Yay! One small wrinkle: The OpenType output makes extensive use of quadratic curves. (http://blogs.sitepointstatic.com/examples/tech/svg-curves/quadratic-curve.html) No such thing in a Path2; just an arc. When the OpenType is translated into SVG (using text-to-svg), the path looks a little like this: "M1.66 19.58L1.66 19.58L1.66 2.99L1.66 2.99Q1.66 1.80 2.50 0.99L2.50 0.99L2.50 0.99Q3.35 0.18 4.54 0.18L4.54 0.18L4.54 0.18Q5.72 0.18 6.53 0.99L6.53 0.99L6.53 0.99Q7.34 1.80 7.34 2.99L7.34 2.99L7.34 18.90L7.34 18.90Q7.34 20.16 8.44 21.02L8.44 21.02L8.44 21.02Q9.54 21.89 10.76 21.89L10.76 21.89L10.76 21.89Q12.02 21.89 13.00 21.04L13.00 21.04L13.00 21.04Q13.97 20.20 14.00 19.01L14.00 19.01L14.00 2.99L14.00 2.99Q14.00 1.80 14.83 0.99L14.83 0.99L14.83 0.99Q15.66 0.18 16.85 0.18L16.85 0.18L16.85 0.18Q18.04 0.18 18.86 0.99L18.86 0.99L18.86 0.99Q19.69 1.80 19.69 2.99L19.69 2.99L19.69 19.58L19.69 19.58Q19.69 23.00 17.01 25.27L17.01 25.27L17.01 25.27Q14.33 27.54 10.76 27.54L10.76 27.54L10.76 27.54Q7.16 27.54 4.41 25.25L4.41 25.25L4.41 25.25Q1.66 22.97 1.66 19.58Z" That's a letter. (Not sure which letter; that doesn't matter.) I could write a wee utility to turn this path into a BABYLON polygon except for those quadratic curves in the path. If there was a Path2.addCurveTo method, then there would be no technical barrier. At this point, I have stalled out a little. I would be pleased to write an add-on for BABYLON but I am trying to decide what definition would be most useful. I think emulating Text-To-SVG functionality might be the way to go. This was brought to you by the Letter G.
  9. Yo, Wn! Thanks for the playground link. I have a question. OK a preamble, then a question: For me, most of the value of a camera is a change in controls. I may be missing something so feel free to chime in. I have not, for example, seen view-radius (like zoom in a normal camera lens), as a software parameter. I started with the Arc Rotate camera probably because that was in the demo code I started from. It's a great starter but it has some obvious limitations. I was going to try the Universal Camera next. The main issue with cameras for my application is that my users are not presumed to be tech savvy or gamers. They are happily doing their job on a computer and then - whoops, 3-D! The Arc Rotate camera seems to be a good starter because it is fairly simple and fool-proof. It doesn't allow me to see all the angles I want, tho. Now where is my question . . . hmmph.
  10. DK, just so you know, I gave Babylon props on the Illuminated City landing page. You can see it in San Francisco but it will go in all cities.
  11. Name is Brian Button; title is Illuminated City; screenshot is below. If there is anything else I can do, please let me know. I am a fan of what you guys are doing and have benefited from the community.
  12. I dropped it on your wall (or page or whatever they call it here) last night. I figured the longer I took, the more you would expect it to be great. So, I wanted to nip that in the bud. If you do not see it, please let me know. I will almost certainly have better-looking updates in a few weeks. So you might hear back from me . . .
  13. DK, sorry to keep you waiting.

    Name is Brian Button; title is Illuminated City; screenshot is below.

    If there is anything else I can do, please let me know.  I am a fan of what you guys are doing and have benefited from the community.

    image.png

  14. It's pretty high on my list. Since, I presume you will keep it posted for a while, we were trying to pick the most effective one we have. My plan was to give you the goods this weekend. Does that work for you? Heck, I can do it tonight if you wish. In any case, be reassured that I am not gonna forget.
  15. Prym8, I agree. I created a helping utility but it gets fouled up when I do a major rewrite. (It was a huge rewrite and was just finished last night.) I want Illuminated City to be intuitively clear to all newcomers and it is not. That being said, here are a couple tips: ~ When you change selections on crime types or categories the "Update" button should light up. Click that button to see your selections on the chart ~ You can also choose more narrowly for calendar time or for things like time-of-day and day of week by using the other tabs in the panel ~ The tool panel (the panel overlaying the canvas) has a "target" function which permits you to select an area and see more details of the crime events there I hope that helps. I appreciate the prompting and will continue to work to improve clarity. Thanks for the note.
  16. DK, I would be delighted. I will give you several screenshots to pick from.
  17. This is wobbling to market. Crime analysis tools: prototypes built on open data. The "strive" was for great presentation fast, slicing a lot of data in many useful ways. I started with SVG - and still use it for conventional charts. A lot of the data is presented on a map. In January, I elected to dispense with Google Maps and put the whole thing on a Babylon Canvas. I already felt late so it has been an intense period. Images are below and you can use it at https://sanfrancisco.ca.illuminated.city, https://chicago.il.illuminated.city and https://boston.ma.illuminated.city. The 3d part is called "geo-location". (You may need to sit and the landing page for a few counts before trying to navigate.) Thank you all for making Babylon. It has changed my life. Also, a shout out to JohnK for suggesting SPS, which have served me well. Comments, suggestions, conversation all welcome. Notes: ~ I applied scene.pick to allow the user to enumerate details of crimes in a specific area. ~ Chicago is mammoth, with about 400K crime records and a bazillion hexagons, but it still works Image 1: Assault and Battery in San Francisco for the past three years. Image 2: Theft from motor vehicle. Color indicates increase/decrease; elevation indicates current level
  18. JohnK, that was great! As Mikey (Trainspotting) would have said, SPS is "custom f**king designed for your needs." Let me know where to send the check . . .
  19. JohnK that is a promising-looking lead! I shall try it out. Thank you.
  20. Uh. Further note on the rules: I realize I have not boiled this down to a code sample on the playground . . . or anywhere. This may be too vague. I will try another cut. I can express what I want in (30K++) individual meshes. I can merge those meshes down to fewer than 300. When they are merged and the temporary meshes are disposed, then performance is pretty damn good and the presentation is too. However, the current implementation takes far longer than is acceptable for my target audience; they hit a button and should see a graph after a bit. The supposition behind post this is that I am taking the long way 'round. I can further optimize creation, merging and disposal in the existing process . . . but I suspect that my core folly is that I am creating scads of full-fledged meshes, used only for their geometry. For example, if there was a way to generate arrays for the Positions and Normals and Kinds without creating the Meshes themselves, that would streamline things immensely. Anyway, that's all I got.
  21. I am working a brand new application. Not a game. I am pushing Babylon in ways that may be unique. I could really use some advice on high mesh-count situations. Please! Here is the deal. I generate graphics about crime data on SVG. WebGL can look a lot better but it is still kinda balky. The first two images are Attempted Murder in San Francisco for the past three years. What you cannot see in those images but can see in the next two (aggravated assault) is that the whole city is tiled in hexagons. About 40K for San Francisco, more for Chicago. All results are delivered by presenting color, opacity (and now elevation) in hexes. Image 5 shows increases and decreases of theft from Motor Vehicle between two six-month periods. Right now, I create a scene as follows: ~ Generate individual meshes to correspond with all "visible" hexes ~ Pattern-match materials and merge the hexes down from 30K meshes to about 200. ~ Dispose of the unmerged meshes ~ Show the scene ~ Gradually dispose of the meshes These unused meshes are consuming a lot of time. Especially since, except for a handful that are not merged, none of them are shown to the user! It would be conceptually far more ideal to create the hexagonal geometries and group them directly rather than creating meshes. I lack the chops to do it but am reasonably sure it is possible. I welcome advice, snippets or . . . consulting offers?
  22. I had a huge loading performance a couple days ago. I have gotten past it now but it seems like something you should know about. I was trying to load a *lot* of meshes, say up to 20,000, and ran into a serious wall below that. The time for the first render completion was over a minute. I did the most practical thing, hit pause a few times to see what the system was doing. My system was spending all of its time in a FOR loop in Material.prototype._markAllSubMeshesAsDirty. (Attach 1) getScene().meshes is all of my meshes, so this was a long FOR loop. The plot thickens because it was a downstream side-effect of another FOR loop Scene._evaluateActiveMeshes. This FOR loop was also the length of all of my meshes. So, my first render was blocked by an n-squared algorithm that evaluating dirtiness. Lots and lots of dirtiness. I got past this with a hack, initially. I disabled Material.prototype._markAllSubMeshesAsDirty for the *first* *render* only. No ill effects. Later, I started merging meshes. Let me tell you, the mesh merging is the bomb! It changed everything for my application. Instances, yawn. Clone, snore. Merging killed it. I do 3-d graphs and there are a lot of similar meshes (everything is a hexagon, for starters). In my tests, I could reduce independent mesh count by a factor of twenty. Now I am loading 150K hexes fast and with good frame rate. I archived the original problem child at http://www.brianbutton.com/chart3d/carthagevirgin.html
  23. Wingnut was almost right in his July posting, including examples on creating a faux-buffer. It turns out one needs four numbers per cell. http://www.babylonjs-playground.com/#1ED5OQ#9