The gif from threejs demo, the line seems always suitable for screen, maybe on pixels. How to create line like gif in BBL?
Are you interested in math only or in drawing lines that looking the same as seen in the GIF?
I want to draw lines looking same as gif. Animation,trail, glow and the stable thickness (render on pixels?)
One of the possible ways would be drawing the line and apply an alpha gradient texture and just animate the uvOffset
.
What about the line size? It doesn’t change according to distance of camera?
You can use tubes instead of lines.
or you can play around with the still in development GreasedLine
which I am currently working on BabylonJS MeshLine - a port of THREE.MeshLine
I always wanted to create a demo of these flying lines (like the GitHub globe had) so it will be a very good showcase for the GreasedLine
. I might try to make something similar today.
R.
I was working on the GreasedLinePBRMaterial
yesterday and now we can draw a line using dynamic widths and PBR capabilities so it will be easy to make it looking more cool. Glow is used here.
So these are the first steps, I will continue to improve it…
Using the lineVisibility
property we can reveal the line smoothly.
The PBR material has a projection issue I am aware of and oh man, the quality of the demo code is just fast prototyping and testing shit Will be tied up later…
Couldn’t create a demo build, vite
suddenly can’t find the typescript compiler… LOL Have to figure it out…
However if you want to have a look, clone, npm i, npm start will start the globe scene with the flying line v0.01.
R.
Amazing! That’s so cool!
Wait for it
Hey!
Not ready but I have to focus on the GreasedLine
itself again (and it’s a birthday party today… ) and it’s looking quite cool already.
Have a look at it yourself:
GitHub Globe like demo using GreasedLine
Source:
Quick explanation:
- Generate random rotated and length arcs using the
circle
method width increased widths and the front of the line
const circlePoints = circle(EARTH_DIAMETER / 1.9, length, 0.05)
// pw - point index - returns array of two numbers [upper_width, lower_width] at that point
widthCallback: (pw) => {
if (pw < points.length * 0.02) return [10, 10]
if (pw < points.length * 0.05) return [8, 8]
if (pw < points.length * 0.1) return [7, 7]
if (pw < points.length * 0.15) return [5, 5]
if (pw < points.length * 0.2) return [3, 3]
if (pw < points.length * 0.3) return [2, 2]
return [1, 1]
},
-
rotate the lines and alter it’s material’s
lineVisibility
property, increase form 0 to 1 (0 - nothing from the line is rendered, 1 - the whole line is rendered) -
if the
lineVisibility
is at max, decreasealpha
andlineVisibility
as well until we reach a minimum and to the whole cycle again -
do this for every line
Any questions? Just ask.
R.
:
Please note, GreasedLine
is still in alpha/prototype/fast and sometime shit cod. A lot of things will change so don’t rely on this code by any means.
Tested on Mac.
EDIT:
Sun, Moon, Clouds, Debris added - see readme.md about the credits
GitHub Globe like demo using GreasedLine - refresh your browser please if you visited the page before
It’s running well now.
Cool and then, a warm welcome to the Community,
Did you use grease lines AND do you have a question?
There are a few rules in this forum. Not many, but some. If I can allow myself, there’s this rule where the forum is ‘english only’ and we all have to bend to this rule (knowing that english is also not my language). So may I ask you for your next posts (and I hope there will be many) to at least include the english version text?
Also, you can post any of your results or achievements in the Demos and projects category. Where Questions category, as its name suggests, is ment for asking about things and hopefuly get an appropriate answer from the team or community members.
Again, a warm welcome to the Forum and I hope you are enjoying your time with BJS.
Meanwhile, have a great day
This is a line with width composed of points drawn as faces and merged faces. It is still being tested, although I have given it many functions, such as width, height, color, texture, flow light dynamic effect, luminescence, etc. Currently, more compatibility is needed
This is my first time responding to a community question and I am still familiar with it
Next, I will try using a tube to implement a cool looking flying cable