Popular Content

Showing content with the highest reputation since 11/07/18 in all areas

  1. 11 points

    Inspector v2.0

    Hey team!!! I'm so happy to start sharing what I was working on for some times: https://medium.com/@babylonjs/dev-log-creating-the-new-inspector-b15c50900205 I hope you like it as much as I like working on it This is the repo issue associated with it: https://github.com/BabylonJS/Babylon.js/issues/5415 I plan to merge it to master probably this Monday
  2. 10 points

    AmmoJS support

    Hey, AmmoJS physics plugin has been added to Babylon preview. It should work well with composite meshes which we've had trouble with in the past with other engines. Let me know if you find any issues or have any feedback. Note: Support for motors, soft bodies, other ammo specific features are not yet supported so yell if you need anything specific for your project. vid.mp4 Examples: Basic impostors: https://playground.babylonjs.com/#7149G4#31 Loading mesh and colliders from file: https://playground.babylonjs.com/#66PS52 Loading and adding colliders manually in Babylon: https://playground.babylonjs.com/#FD65RR Loading and adding collider with joints and pointer interactions: https://playground.babylonjs.com/#DGEP8N WebVR grabbing and throwing: https://playground.babylonjs.com/#ZNX043#1 Docs: https://doc.babylonjs.com/how_to/using_the_physics_engine
  3. 9 points

    Deltakosh out for 2 weeks

    Hey team! I'll be out for two weeks going to some needed vacations Do not expect any answers from me during this timeframe See you all in 2 weeks!!
  4. 7 points

    Inspector v2.0 is ready for testing

    He is here and already deployed to sandbox and Playground Feel free to report any issue!
  5. 7 points
    I made a progress bar using two rectangles, a container and a text block, here I thought I would share because I am very proud of myself ! You can find the code to run it just here: https://playground.babylonjs.com/ts.html#P3XLK9
  6. 6 points
    Hi @Kevin Trepanier, From a FGL-Flash-era comparison the big changes are HTML5's shift towards revenue-split, syndication, multi-platform, multi-player. A good Publishing Partner (who can bring high volume traffic and share revenues fairly) is good to have but might take time (and a small catalog of games) to find? Sponsors. The "Auction" exclusive-upfront-fee licenses are rare (or rather the level of risk for a small team to build a game of sufficient scope to gain exclusive interest is hard to justify upfront). The "Gameshop" style non-exclusive upfront-fee licenses do exist, however the number of active sponsors in the market are few so overall revenue is limited (in comparison to slower but longer revenue-split). There are links on this forum to such sponsor portals, although it's a changing list with high churn so your own research will be necessary. Virality. As always, it's possible but improbable! But more contagious these days is the speed and quantity of rip-offs and clones. Any big-idea must be protected with (or leverage) a server-side strategy. Of course everybody's mileage will vary, most will quietly stall whereas a few successes are very real and highly deserved (and often humble!). I hope that's a fair and helpful overview.
  7. 6 points


    https://en.m.wikipedia.org/wiki/BabylonJS EDIT 17 Nov 2018 On hold again as it was put on by a banned user. EDIt 1 Dec 2018 Back on line again - hope it holds this time
  8. 6 points

    draw font inside of shader

  9. 5 points

    Y8 Destroys Your Games (and websites)

    Complaining about a bunch of IP infringing 'Mario' games being removed from a distribution network? Ballsy move bringing attention to that!
  10. 5 points
    Play "Offerlings" in your browser" For the game jam Ludum Dare 43 we decided to try out BabylonJS. We knew we wanted to create 3D game and for it to run on the web and on mobile browsers. We'd previously created our own JS engines with THREE.js as the renderer, but the time constraints of the game jam (3 days) meant we wanted to an existing game engine. We looked at other game engines that had HTML5 exports (Unity, Godot, Unreal), but none of them really worked on mobile. We're really happy with using BabylonJS, the examples were great for learning how to add various features into our game. Looking forward to the AmmoJS plugin in version 4.0! Let us know what you think of the game, and if you spot any problems.
  11. 5 points

    GUI ScrollViewer

    ScrollViewer now available and enhanced by DK
  12. 5 points

    Shared transparency

    hi https://www.babylonjs-playground.com/#1TYWYB#188 you can use 2 renderTarget for make that 1. for render transparent area inside of black Area https://www.babylonjs-playground.com/#1TYWYB#186 2. render nan transparent meshes https://www.babylonjs-playground.com/#1TYWYB#187 then mix that with postprocess
  13. 5 points

    Build a House from a Floorplan

    In this image the blue walls are the inner walls and the red ones the outer walls, the position vectors ai, bi, ci are known and hence so will line L = bi - ai and next line N = ci - bi. We need to find the position vector of bo. Knowing the distance between the inner and outer wall we can use the right angled triangles (as shown) to determine bo. Using the vector dot product angle = Math.acos(BABYLON.Vector3.Dot(line, nextLine)/(line.length() * nextLine.length())); we can determine the angle between L and N. However that angle can be acute (left hand image), obtuse or reflex (right hand image) whereas the Math.acos returns an angle between 0 and PI. Using the cross product direction = BABYLON.Vector3.Cross(nextLine, line).normalize().y; will give a vector perpendicular to L and N ie of the form (0, y, 0) and normalizing will give (0, 1, 0) or (0, -1, 0) depending whether the angle is reflex or not. We need to find out the unit vector perpendicular to L (forms the right angle in the images). Since taking the dot product of (x1, y1, z1) with (x2, y2, z2) gives x1x2 + y1y2 + z1z2 which will be zero when the two vectors are perpendicular then for L = (x, 0, z) the perpendicular (or normal line) to L in the plane LN will have the form (-z, 0, x) as these give a dot product of zero. Hence lineNormal = new BABYLON.Vector3(line.z, 0, -1 * line.x).normalize(); The we need the unit vector in the direction of L line.normalize(); Current ai tells us we are at wall w and bo is for wall w + 1. Since the walls are closed at the end wall w + 1 = 0. Hence the need to work modulo the number of walls (w + 1) % nbWalls Now we can use the right angled triangle to determine the position vector of bo. Starting from bi (corner of wall w + 1 mod nbWalls) travel along base and along height to get to bo (vector addition is commutative so can add in opposite order) as below Walls] = walls[(w + 1) % nbWalls].corner.add(lineNormal.scale(ply)).add(line.scale(direction * ply/Math.tan(angle/2))); remember ply is distance between inner and outer wall so vector along height is scaled by ply. Knowing ply and the angle we can use tan to get the base length. Multiplying by direction deals with when angle is reflex or not. we can then move on to the next line along line = nextLine.clone(); and find the next line. Note we are using subtractToRef V.subtractToRef(W, R) which takes W from V and puts the result into R walls[(w + 3) % nbWalls].corner.subtractToRef(walls[(w + 2) % nbWalls].corner, nextLine); note that as ai is wall w, bi is wall w + 1 and ci is wall w + 2 Hope that helps
  14. 5 points

    2D, 3D Wave simulator

    Please visit my website Wave simulator http://grid.vn/song/app/EnSong3D.html WAVE INTERFERENCE http://grid.vn/song/app/EnGiaoThoaSong3D.html
  15. 4 points

    New forum

    A vote to leave or remain causes a flashback to the Brexit referendum here in the UK. As I trust Deltakosh and Jerome more than any government leaders I am persuaded by their reasoning so I will 🍃.
  16. 4 points

    Scissor Rects

    Here we are: https://playground.babylonjs.com/#JJYFI8#1
  17. 4 points

    Babylon.js Team Blog

    The Babylon.js dev team recently has been blogging about new features for Babylon.js on Medium. Here is the link to the medium page. We would love to get your feedback on the blog posts, any suggestions for new content, and are open to having guest blog posts from the community!
  18. 4 points

    Shell Shockers

    Update: I'm using the full-on Babylon Null Engine on the server-side now to handle collision detection. The maps are divided into 3D grids, and every occupied cell contains a reference to an arrangement of one or more AABB or OBB bounding boxes for quick collision calculations, all loaded from a .babylon file exported from Blender. The game supports all sorts of map elements of all shapes now. Also, kudos to everyone who worked on Babylon v3.3. I'm making the transition now, and I'm seeing huge improvements in some key areas. A number of animation problems have disappeared. SPS mesh building is orders of magnitude faster than it was, which is great, because that's how I build the maps at run time. A number of other smaller items that I had clumsily patched up myself no longer need to be. Good stuff!
  19. 4 points

    A battle chess or card game framework.

    https://ljzc002.github.io/CardSimulate2/HTML/TEST4optimize.html I'm trying to make a battle chess game framework.By now,I have completed the following functions: Use wasd,Shift,space to fly around the scene. Press alt to display hand cards. Click to chose one card or use Shift/Ctrl to select multiple cards and use 1-5 to team them up. When close to a hand card,you can click the button '落子'(Drop the pawn),then the sight change to orange,click the chessboard with the orange sight,the hand card will became a chess pieces. Select a unit on chessboard will display the range of movement by blue masks and the skill table by a DOM node,then you can move the unit by click the mask or click the DOM node to select a skill(up to now,only 'nattack' and 'test5' can work),click other grid or the unit itself will deselect the unit. Use skills to an target will trigger a series of animations,if the unit's hp falls below zero it will turn gray and go up to hand cards. After a round of action,you can click '下一回合'(Next round) button in the hand cards view,the unit on the chessboard will be waiting for move again. I don't have much experience in making battle chess games.I am eager to get to get some suggestions on how to optimize the ui and the operation mode. Next,I plan to use some 3D model to represent units on the chessboard,add some sound effects into the scene,and try to make a websocket interconnection.
  20. 4 points

    Introducing Dark Matter CCG

    Hey all, So I'm finally starting to promote my babylon based project a bit now, that I have an actual site together at www.darkmatter.game - The game itself isn't hosted there or anything (it will be a PC+Mac release), but I have been putting out a ton of playtest / demo sessions I've recorded on YT and posting on site (and will be throughout the next week). So anyways, if you're into digital CCGs or CCGs in general, you should def check it out as it's quite unique. I would also love any feedback, and am happy to answer any questions you might have! Also, should say thank you to anyone on these forums who has helped me in any way up to this point! I mean, these forums are seriously great, and filled with helpful people. (Should my project make it into the big leagues you can be sure I'll do a forum search and you can expect your name in the credits )
  21. 4 points

    Error on loading .OBJ files

    @Madclaws - Firstly, your file names don't match, so unless you have edited the OBJ and MTL files yourself, the loader is looking for the same name MTL file. Start by opening your OBJ file in any text editor, and verify the name of the .mtl file the .obj file is looking for. This will be in one of the first few lines of the OBJ file. As it appears the OBJ file is looking for a different MTL file name, this is not normal. It;s always best to keep your OBJ, MTL, and JPG (texture file) the same name as every exporter I've ever used writes these as the same name; and looks for the same name files on import - definitely the Babylon OBJ file importer. And your OBJ manifest file and MTL file are of different names. So I might assume your other files are not matching the names precisely. Upper case and lower case must match also. You don't need a manifest file... however, if you want to get rid of the 404 error for the manifest file, simply create an empty file with the same name as your OBJ file, and give it the extension .manifest. Example 'obj_name.babylon.manifest'. However, this is not important as others have already stated. If you're loading multiple OBJ files, then I recommend editing your OBJ file and remove the reference to the .manifest file. Then it won't look for the file. As for the .mtl file, this must also have the same name as the obj file. Example 'obj_name.mtl'. This is your material file with all your material attributes (settings.) This will work the same way if your mesh has a texture which will also have the same name as your obj file with an extension for the texture such as 'obj_name,jpg'. I work with OBJ files every day, and almost always edit the OBJ and MTL files as they are self explanatory once you open in a text editor. If you don't want a MTL file on your mesh, then simply remove the reference to the MTL file in your OBJ file. Then it will simply use a default material or none at all depending on your OBJ file edit. However, I find that different applications such as Blender often write odd values to the MTL file which is completely dependent on the user who has set up the material and texture. So I almost always edit my OBJ and MTL files as I can get the desired material editing the ambient, diffuse, specular values, etc. directly in the ascii files themselves. It's so very easy to read and edit. 2 minutes experimenting with no prior knowledge is more time than anyone needs to learn everything there is to know about the OBJ format - including editing normals, vertices, etc. It's simple for a single OBJ file, but if you work with real time scans producing hundreds of unique OBJ files to load in real time, then I write simple scripts to edit each OBJ file as needed. The .babylon format has many attributes which is far more advanced if you want to export scenes. However, if you are only importing meshes, the the OBJ format is by far the most reliable format and provides a level of flexibility in being able to edit the ascii files directly. Once you open the OBJ and MTL files and spend a couple minutes editing these and learning what values represent the different attributes, this will become your format of choice for meshes. I can't imagine otherwise, as there is little to nothing which will cause you problems once you understand the format. Remember that you can always apply Babylon materials and textures (and other attributes such as shaders) after import - which I do often. I hope this info helps, as you're definitely on the right path to the ease of importing OBJ files. If you read this and follow the advice to test a few edits to the files, I can't imagine you won't have a firm grasp of the OBJ format. However, if you still have issues, then post an OBJ, MTL, and JPG file all with the same name before the extension, and I'll be happy to walk you through the key lines to edit to gain full control over the resulting mesh(s) import. FYI - I introduced the other software engineers at Sony Electronics to the OBJ format, and it is now the format of choice for practically all mesh content due to it's simplicity and flexibility. This is after they spent several months working will every other format and exporter. No need to over complicate simple tasks - which often happens due to the OBJ format being decades old now; so people assume newer formats are better. But there's a reason why the OBJ format continues to be the most widely used in export/import between most applications. Cheers, DB
  22. 4 points

    Debugging physics with the inspector

    I'm on fire ;D New video_Medium (2).mp4
  23. 3 points
    No bans are happening here (yet). @5neia_opo2@google-mail.ooo, try to understand the frustration people are experiencing. A new user came to the forum and in nearly every post they made trashed the project they were asking about. A lot of people here put in a lot of time and effort to not only to develop the project, but answer questions here as well. I was definitely frustrated reading your responses as someone who has put 6+ years of their life into this project. @botmaster did a poor job of handling that situation, but has apologized and I'm sure will do better in the future, as will you as well. Let's all be adults about this, acknowledge we did something wrong, and move on. @5neia_opo2@google-mail.ooo you are free to ask any question you need help with, but I definitely recommend reading through some tutorials, the examples, and checking the API docs before asking questions. It will often lead to you finding the answer yourself, and there will be less fatigue for the people answering here on the forum. I'd also recommend you approach things you don't understand, or decisions you disagree with, with a more open mind. Try to learn and grow the new library, not all libraries are alike and different problem spaces call for different solutions. Having a bad attitude is a good way to earn ill-will in the community and you may no longer get the help you expect if you are ungracious about it. When you find inconsistencies, or things you think should work differently, then change it! Pixi.js is an open source library built by the community. Everyone gets a chance to make the library better by contributing to it. The best way to get problems you have fixed, are to fix them yourself.
  24. 3 points

    melonJS 6.4.0

    Hello, shortly after the Chinese new year, here is a new release of melonJS, High-Level Changes : New documentation format, including a better, more modern, layout and search feature. http://melonjs.github.io/melonJS/docs/index.html Support for Multiple Texture Packer Textures Added Colour Tint support for Renderable (WebGL mode only for now) Bunch of small fix and improvements on Renderable, Animations, Isometric rendering, and System renderers See here for a more detailed changelog, there is no API change this time (just some internal re-factoring), so you can safely upgrade without breaking your game Have fun guys, and let us know what you think about the new documentation ! (it certainly can be further tweaked/improved) --- the melonJS team
  25. 3 points

    Bezier curve support added

    Panda Engine 2.12.0 now supports bezier curves with new Curve class. Here is interactive example, where you can see bezier curve in action: https://www.panda2.io/examples#curve-handles You can modify the curve by moving the start and end points as well as the two control points. Here is also example on how to use Curve together with Tween: https://www.panda2.io/examples#curve-tween Documentation of Curve class: https://www.panda2.io/docs/api/Curve
  26. 3 points

    [WIP] Warlock's Quest

    Hello! I've been working on my pseudo-3D ray-casting engine and I think it's time for some feedback. This is a 3rd person dungeon crawler game. You play as a Warlock on a quest to save your princess Evil Lord from those no-good humans. You must defeat 5 dungeon bosses to win the game. Each defeated boss grants you an additional minion to summon in battle (5 total). Each summoned minion costs health. The Warlock slowly regenerates health over time, but player/minion damage to enemies heals the Warlock. The dungeons are spread across a hub map, The Forest. The game is made entirely from vanilla JavaScript (no libraries or frameworks or engines), HTML5, and CSS3. Game Link: Click Here To Play I've currently only completed 3 of the 5 dungeons. In ascending order of difficulty: Goblins, Elves, Nature. Not sure what Dungeon 4 enemies will be, but Dungeon 5 will be the humans who defeated your Evil Lord and defeating this dungeon will win the game. Each dungeon has 2 unique standard enemies and 1 unique boss. The Big Things To-Do List: Dungeon 4 & boss Dungeon 5 & boss Music Balancing I would like feedback in these specific areas, but all feedback is welcome: Performance Mobile/Touch Controls Game Difficulty Is it fun to play? Programmer art aside, is it visually appealing/interesting? Thank you for your time and I look forward to your feedback. Thanks! Bob
  27. 3 points

    It's Christmas

    Hello, Merry Christmas and a Happy New year to everyone. Made a quick little scene using Kenney's holiday pack. Do check it out. Had planned a lot more but couldn't finish in time for the festival. Anyway here it is : It's Christmas Happy holidays! Abhi
  28. 3 points

    New forum

    I'll provide a zip of all attachments when you request it, you can decide if you want to do anything with them or not after that.
  29. 3 points

    New forum

    I'm in full control with no dependency at all this time. I wanted to use the oss offer of discourse but ultimately I picked a paid subscription because I wanted things like custom domain, etc.. Technically the forum is a docker app that I can run where I want so this should be futureproof
  30. 3 points

    New forum

    Please read this : http://www.html5gamedevs.com/forum/33-phaser-3/ and this : https://phaser.discourse.group/t/welcome-to-the-new-phaser-forum/15 Rich is the owner of the current forum hosting, the BJS forum is simply a share in this hosting. The Phaser community will leave to Disclosure within weeks or months and the current Phaser forum will slowly die...in terms of community activity. It will still exist for archive/history reasons. Then Rich will have no more reason to maintain, animate (nor pay) for HGdev hosting, no more reason than archive/history necessity. I know we all love our current forum. It's not just a tool. The forum is our community cement ! it's our bar, pub, club house, what you prefer... it's the place where we love to talk about BJS, to make jokes, to show nice demos and to help others. It's a meeting place and a small part of humanity in this vast virtual space that Internet is. We all are conservative, we all love our logos, emoticones, pages, links, buttons, tiny red notifications, etc. Well, our habits. Because they help us to feel confortable. Hell, it's our home, here ! But the reality is that this home will certainly disappear due to the Phaser community choices. We were depending on them since the begining and fortunately they accepted to invite us and to host us when BJS was just a tiny thing with no fame. So, many thanks to them. Maybe it's time now that we grew up to fly with our own wings and to leave this crumbling house to get a better one.
  31. 3 points

    BabylonJS and Android using Basic4Android

    No worries, hopefully it will help others get started.. It took me a few years to find Basic4Android when looking for a decent toolset to create Android Apps which offered enough flexibility to delve deeper if needed but not too much coding for codings sake. I had an idea for a 3D game a few years (4 or 5!!) ago and then went looking for a 3D framework. I came across BabylonJS and have just about achieved my goal for this now, thanks to you and David R + others along the way. My game is very much a 0.1 version of where I want to get it to, but as always there are other time pressures. 0.1 is just about viable - hopefully if there is interest I am hoping to improve on it rapidly.
  32. 3 points

    Please Help with this...

    Hi @i_tejas19, welcome to the forum. Congrats on successful BJS scene/animations! Pop-up mouse-over labels, eh? Here, check this out... https://www.babylonjs-playground.com/#XCPP9Y#447 That playground teaches BabylonJS GUI labels... AND BJS ActionManager onPointerOverTrigger. Keep in mind that an entire PANEL of information... can pop-up, with clickable stuff on that panel. WOW! I found that playground... using a playground search. I happen to know that MOST GUI demos have the term "advancedTexture" in them... from experience. I often re-name my GUI demo vars to 'adt' - short for advancedDynamicTexture. AdvancedDynamicTexture is a basis for BabylonJS GUI "stuff"... sort of like a sheet of glass that can be put atop a mesh, or across entire screen. Then we paint GUI "controls" onto that glass. That playground will get you started. Both BJS GUI and BJS ActionManagers... are very powerful and versatile. Take the time to read/experiment. Look at the demos/playgrounds in the docs... they inspire more ideas. Soon you will be expert. Ask more, if needed. Make a playground to show us stuff, if you wish. We'll be here. If solved, mark this thread solved, please.
  33. 3 points
    I've just finished the morphing demo that I've been working on. Thanks everyone for your input! (especially @NasimiAsl who is the grandmaster of shaders) What I'm trying to demonstrate here is morphing not just vertices, but textures as well. I got this idea from Wrap3 which has this feature. This is important with faces because redness and wrinkles will sometimes appear when you tense your face. Unfortunately there is no built-in feature to do this but we were able to pull it off with some extra shader code. I would've loved to add some specularity to the skin but I couldn't figure out how to do that with the custom material. I know this is extreme detail but its a good test. If the player is in the distance then it wouldn't be necessary. I added a "Powered by Babylon.js" sticker so everyone knows that Babylon.js can do cooler stuff than Three.js hehe Feel free to use the source code. http://punkoffice.com/facial
  34. 3 points

    Degrading sound

    Now that I have this reproduced, I think I'm realizing that this idea was never going to work due to the number of sounds. I did a little bit more testing with a 500 KB wav file vs a 15 KB mp3, and the degradation seems more related to the number of sounds than their size. In my game each weapon has like 5-20 sounds, and a player can hold a few weapons. The walk/run cycle has like 16 sounds per material (concrete, wood, grass, etc). It can add up to about ~100 possible sounds per player, though 99% of them aren't playing at any given point. BJS seems totally fine with that many sounds, but it looks like attachToMesh is not designed for this. I read the source code, and it looks like it *might* be viable if it would check if the sound is playing before rebuilding the matrices. Currently it does some fairly expensive work, even for non-playing sounds (setPosition and computeWorldMatrix fill the profiler when stress tested with cloned sounds on moving meshes). I'm going to test positioning the sounds manually at the time that they are played, and not having them move along with the mesh. If that doesn't work I guess I'll pool them in addition. Edit: definitely need a pool Edit#2 at 21 players firing the same automatic rifle, the pool brought the active number of sound instances from 210 down to 59 Here's an ultra simple auto-expanding pool if anyone wants. Usage is just to use 'get' for short-lived sounds and it will handle allocation and releasing on its own. It never deallocs. class SoundPool { constructor() { this.scene = null this.sounds = {} } init(scene) { this.scene = scene } allocate(name) { const sound = BABYLON.Sound.FromAtlas(name, name, this.scene) sound.onEndedObservable.add(() => { this.release(sound) }) this.sounds[name].push(sound) } get(name) { if (!this.sounds[name]) { this.sounds[name] = [] } if (this.sounds[name].length === 0) { this.allocate(name) } return this.sounds[name].pop() } release(obj) { this.sounds[obj.name].push(obj) } } const singleton = new SoundPool() module.exports = singleton BABYLON.Sound.FromAtlas is a little wrapper that clones sounds without making additional xhrs (e.g. 'sounds/foo.mp3', clones it and applies new options)
  35. 3 points
    Hi Guys and Gals, Last summer I went to the Technology & Innovation Lab at a well known IT consulting firm near railway station Utrecht Leidscherijn, The Netherlands (guess which one). Demo'd my game briefly there (in return for trying out their expensive VR headset in my game 😉 ). The game ran awfully slow without any optimization yet but that didn't spoil the fun. Recently HansR, from that company, wrote a very short article about my Model Train Simulator: http://hansrontheweb.blogspot.com/2018/10/babylonjs-applied-model-train-simulator.html And here you can read more about the Wednesday Evening tech tryouts at that firm, for instance playing around with BabylonJS framework: http://hansrontheweb.blogspot.com/search/label/babylonjs Looks like a nice place to code collaboratively! So next time you feel lonely coding BabylonJS, cheer up... and call the innovation department of a major IT related company in your neighborhood. #happycoding Q
  36. 3 points

    Catacombs -- 3D

    To INFINITY and b e y o n d ! Now the lattice develops as you approach, adding chambers ahead of you using chambers that you've left behind. Your processors only have to manage 16 total chambers instead of XxYxZ chambers for an XxYxZ sized lattice. So better frame rate and an infinity of chambers! PG:-------------- 👉 https://www.babylonjs-playground.com/#USDWIJ#5 👈 For challenge, try to make your way to an exit -- exits are at grid coordinates that are divisible by four: [4, 4, 4], [40,-12,8], etc. Another challenge: try exit a chamber and return through a different tunnel. The Code: My goal was to make a regular labyrinth: uniform sized and spaced chambers with tunnels connected to each nearest neighbor. To avoid sight-lines that extend beyond neighboring chambers, I based the chambers on the tetrahedron. The tetrahedron has four faces, none of which are parallel. Actually, I used the truncated tetrahedron which has hexagon instead of triangle faces. I extended the hexagons to form the tunnels. [Some of the code is kinda complicated and the commenting is rather sparse: I need to develop vocabulary.] The following may help. Some interesting characteristics of this tetrahedral lattice: Adjacent chambers are mirror images. The absolute values of the components of a vector between neighboring chambers are equal (opposite corners of a cube). So with a grid increment gi, a chamber located at [a,b,c], its four neighbors would be at: [a-gi, b+gi, c+gi], [a+gi, b+gi, c-gi], [a-gi, b-gi, c-gi], and [a+gi, b-gi, c+gi]. Since neighboring chambers are mirrored, the signs of gi must be reversed for alternate chambers. (PG lines 166 - 178) If the grid increment gi = 1, as it is in the PG, the chamber grid coordinates will all be even or all be odd: [even, even, even] or [odd, odd, odd]. See nearestLatticePoint() (PG lines 200- 230) __________________________________________________________________________ Please come back with your questions and suggestions! 💡 👉
  37. 3 points
    Here is a version that gets close. Its in Javascript rather than typescript but might help you spot any issue with your PG. Doesn't deal with non-letters and letters are applied to all sides. Also I made the cuboids immovable but this can be removed. https://www.babylonjs-playground.com/#UIIK1W And here is one using an second SPS of labels in front of the cuboid https://www.babylonjs-playground.com/#UIIK1W#1
  38. 3 points

    Pixi.js Showcase

    Hello guys, as an old fashion ActionSript programmer I simply love this engine. I created simple floor planning app for temporary walls company - app is responsive and should work across mobiles too. (antialiasing disabled for maximum speed on mobiles). Thanks for this wonderful library. Links: http://www.roomdividersny.com/floorplanner_js/ its a JS version of application created originally in flash years ago, which is still available here: http://www.roomdividersny.com/floorplanner.php P.S.: This is a real app, so please, if you will play with it, dont save (Submit) your work (plan).
  39. 3 points
    @nogalo, what you are describing is a common organizational issue in games. There are a couple of things you can do depending on your assets to load only three meshes total for all of your needs. If your characters are similar in form, say all humanoid bipeds, and share some animations you will want to use animation retargeting to reduce your mesh load. What this means is that all of your meshes need to share the same skeletal structure, both in heirarchy and naming, and you can pass an animation from one skeleton to another. That means you only need to include the animations in one of your incoming characters and then pass the animation clips to any other skeleton and the rotational information from the skeleton will work. You could even import a default character with all the animations that never is rendered on screen but allows you to add more character styles independently of your animation rig. Each individual character carries their own skin weighting so the joints on target models can even be in a different proportion than the default model so long as the animations take this variance into account (say one model has a longer torso or shorter legs). This is the most forward thinking path because it separates your animation pipeline from your character pipeline. The key to this is that you need to pack all of your animations in one timeline for export. I would leave blank frames in between each clip to eliminate interpolation errors, maybe 10 unkeyed frames between clips, in any order that makes sense to you. Once you have your timeline filled with all animations you will need (51 in your case if none are similar like walk or idle) export the file as normal. If you are using Maya, you can author your clips on export with the clip tool in Maya which you can find under the Babylon Menu: Create a new clip for each animation, giving it a name and start/end frame. If you then drop your model into the Babylon.js sandbox, you will see the first animation in the list playing and have the ability to change to any animation with the drop down on the footer bar. If you aren't using Maya, you can manually create your clips as variables in your code which can be found in our animation docs. The best example of this is the animation blending example: https://www.babylonjs-playground.com/#BCU1XR#0 The other way to do this if you don't have shared animations is to keep each character's animation in their own file. This is the best path if you don't share character structure, as in one is a biped and another is a quadruped. This makes each character file individually larger as you carry the curve information in each file so you have a trade off for download of the characters. This makes the shared animation method more desireable if you can swing it, even if there is one more default mesh that holds all animations as your characters are more flexible and lighter on download. This method is also useful if you want to vary up animations and have multiple idle animations that randomly sequence. Containing all clips in one file and randomly choosing one to play when the character idles will make your game feel more dynamic. I hope this helps point you in a direction that allows you to get the most flexibility out of your characters and still not have to load more meshes than you need. Please let us know if you have more questions or want us to take a look at a sandbox for you. Take care!
  40. 3 points
    @V!nc3r I totally agree with you that the spin on the Babylon.js logo as it stand could be better. In that vein, we are in the middle of a complete rebranding effort for Babylon.js as a whole and the loading animation is obviously part of that work. We expect to launch it with the 4.0 release. That said, I did want to take a chance to lay out what we are using as guidelines for motion and the UX design principles behind them. We need to have an indeterminate spinner for loading assets as we won't be able to know how long the assets will take to load. The challenge with indeterminate spinners is that whenever you have a noticeable loop in the animation (as in the animation has a pause before starting over or the logo builds up to completion and then disappears to build again) the user will subconsciously notice the loop and count it. If they notice the number of loops taking longer than normal, they will start building anxiety and likely click away. For an indeterminate spinner, you want pleasing motion that is almost hypnotic so that the user gets lost in appreciation of the motion and does not notice the time passed as easily. This may seem strange and manipulative, but most of UX design is about easing tensions and anxiety for the user to keep them engaged. We would like to use the spinner as a branding moment, but I am not convinced that means it needs to be the logo being manipulated. If you've noticed what Google has been doing with their branding moments in their various properties, their spinners are all about the google branded colors as dots. You get the tie back to the brand because of the colors, but they aren't in the position to need to manipulate their logo to do it. Most brands do not allow additional elements being added to their logo. There are clear guidelines for standoff of additional elements and for the most part changing the treatment of the logo is regulated by the standards guidelines. This is to maintain recognition of the identity with consumers and build trust. It has been shown in many cases where simply changing the packaging of a product can cause a drop in sales as the consumer distrusts that this is the same product they've always purchased. In some ways, brands have been beaten back into submission by consumers when they change their brand too much. A good example of this is when Coca-Cola tried to use New Coke as it's new brand to compete with Pepsi in the 1980s. Now what you see is a unification of branding, even within subsets of offerings. Even with Diet Coke having a different name, the logo is styled to feel like Coca-Cola to reinforce the overall brand. We have to design our motion around the limitations of CSS so that will be a forcing function for what the loading screen looks like. We want to reinforce the brand, but at the same time adhere to good design principles and be easily recognizable. This is most important when people who may not be familiar with Babylon.js run across a site that uses us as a viewer. We want them to become aware of the engine even if they aren't going to be building with it. It's the same idea as the launch of a video game where you see all the logos of the middleware or engines on screen or the start of a movie where you see all of the logos of the production houses that worked on it. Hopefully this gives you some insight into what we are planning. We agree with you that the current motion isn't a representation that we want to stick with and violates several of the points above. Let me know if you have more questions or want to discuss the design principles more.
  41. 3 points

    Classic Space Adventure

    Its strange, but game don't work in Safari. There is no sound and keys don't work. Only mouse. So game ends when I need press Enter. In Chrome work perfect. But to find active objects I press Enter several times a second. So I just missed several dialogs and don't know what to do. It would be perfect to make something like log, where I can reed all important dialogues in chronological order. I finde key, laser gun, but can't ride on bike. What to do?)
  42. 3 points

    How add ring in disc?

    want a tent ? https://www.babylonjs-playground.com/#B0I6G3#13 [EDITED] nicer here https://www.babylonjs-playground.com/#B0I6G3#14
  43. 3 points

    How add ring in disc?

  44. 3 points

    Classic Space Adventure

    I love the very true-to-Lego theme. I had some of those space sets! The sit-to-duck thing is so true to form. It was solid and responsive throughout. Nice! My biggest problem was getting off of ladders and other climbables, across a short gap, onto a ledge. It seemed like I had to climb really high to clear even tiny gaps. But I didn't get far into the robot city - just a bit past the first raygun.
  45. 3 points

    Debugging GUI with the Inspector

    Hey team! I wanted to share with you that the new inspector can be used to debug GUI. Here is a quick video demonstrating it: New video_Medium.mp4
  46. 3 points

    How add ring in disc?

    maybe our good old ribbon then ? https://www.babylonjs-playground.com/#B0I6G3#6
  47. 3 points
    This answer worked for me (answer I got from Stack Overflow) height = velocity^2 / (2 * gravity)
  48. 3 points
    Hi, @dinos! Sorry for the delay in response. I dug into the files you supplied and unfortunately what you are doing right now isn't supported in Babylon.js. Let me break this all down for you and offer some alternatives, though it will greatly change your approach to building your assets. The mesh is a 54,334 vertex mesh, 108,672 triangles Per vertex animation data is used as well as node transform animation on top of that generated from mo-graph simulation 90 frame animation No material The main problem with bringing this directly into Babylon is that we do not support pure vertex animation without the use of a skeleton or morph target. The main issue here is that per vertex data is very heavy and thus expensive to store when you are calculating 60 frames a second. With bone animation and morph target animation, we are able to calculate easily within the shader, but with vertex data, we have to load new data each frame which has a huge overhead. You also have the issue of larger file sizes for download on the web because you are storing 90 frames of transform data for each of the 54K vertices in a file that needs to be downloaded. With bones, you store the transform information on each joint (which will usually be fewer than 50) and a skin for the mesh, which is the influence on a vertex from up to four bones in normalized weights, to determine its final location on a frame. This is far less data to download on the web. With morph targets, you store multiple mesh states and then a target for interpolation per vertex per frame. This carries with it a larger file size than bone animation due to the extra triangle lists copying your original mesh but this is cheaper than per vertex animation because the shader can calculate the interpolation between the start position of a vertex and the morph target's position while keeping everything stored in memory. Think of it this way, with a skeleton, we load one mesh and one joint hierarchy. With morph target, we load a mesh and up to four morph target meshes. With per vertex animation we will load 90 meshes. We haven't had this type of request before because we are rendering 60 frames per second on the web with a single core while also needing to target lower-end machines. Most of the content that will be created for web will use game industry optimization and tricks as there is a limit to rendering resources and we need to decide where the trade offs must be made. Now some options that will change your workflow but make this possible would be this: Determine if you can do an effect that you like with a skeleton. You could potentially create a skeleton rig in the B that would mimic your balloon animation, but it would be much more work to rig and animate as you won't be able to rely on the ease of the simulations in C4D. Determine if you can develop motion to be able to utilize morph targets. You could rely on C4D simulations to generate your target meshes at the extremes of the animation, and then use your morphs to get motion that feels similar. The drawback with this approach is that you can only have 4 morph targets and interpolate between each of them per frame. In this way, you can get some interesting mixes, but you lose control over the subtleties of your shapes because of the limitation of morphs you can have. This is where planning the motion around knowing you are using morph targets comes in. It's easier to use a portion of your current workflow in generating your morphs, but are more limited in the motion you can create. Ask yourself if you NEED 3D objects for everything in your scene. If you have some motion that you don't allow the user to move around, you could render out an animated sequence or video that gets rendered on a quad. You are able to move the quad around, but don't have the overhead of vertex animation of any type. You can use your current workflow for this type of element and set up a sprite sheet animation or video. Some things to keep in mind when building assets for WebGL Try to keep your vertex count low and utilize normal textures for more detail. Use the minimum amount of vertices to render your silhouette only. Let all other high frequency detail live in your texture set. Look at the overall stats for your scene. Even if you keep your vertex counts low (5 - 10K) using large textures or many of them will also hit performance. Optimize your UV shells so that you can pack more geometry into each texture. If you have an area that isn't important, reduce its texel density to allow for more UV shells on the sheet. Keep your skeletons as simple as you can. Objects that don't move don't need bones. If you have more questions or would like examples, please let me know. We haven't had a lot of people coming from motion graphics to Babylon.js yet, so we haven't had a lot of requests like this one. Take care and I hope this helps somewhat, even if it's not the answer you were hoping for.
  49. 3 points

    Finish Line Block

    Here is one solution: https://www.babylonjs-playground.com/#20OAV9#374 You have to muck with the UVs for it to work. Edit: Make a couple of corrections.
  50. 3 points
    Hello @KerwinK and welcome to our forum! It's a pleasure to see that you would like to use babylon.js for your business. As Dad mentioned Microsoft is not offering paid support for Babylon.js but instead let me (and my team) work on it in an OSS spirit. This is a win win situation where we keep developing the engine for free whereas several products at Microsoft (Including SharePoint or PowerPoint) can leverage a professional grade open source realtime engine. In the meantime we have high expectations regarding the quality of support we bring to all customers. For instance, you can see on our main repo that the issue resolution time is....20h (less than a day) So I do not think we could do better with a paid support. However, I also know several companies working on babylon.js that would be happy to help you so feel free to ping me at davca@microsoft.com if you want more info