Some Patterns
Video Lecture
| Section | Video Links |
|---|---|
| Some Patterns | |
(Pay Per View)
You can use PayPal to purchase a one time viewing of this video for $1.49 USD.
Description
Note
In this lesson, we also introduce the TSL named imports of fract, step, length, sin, cos, atan.
Now we will use some mathematics to draw some pretty patterns.
You will see at the end, that variations of only a few methods can produce vastly different results.
We will begin by using inline functions, and then move onto TSL functions.
Start Script
./src/main.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | |
Example 1 : Checkered Cube
const material = new THREE.NodeMaterial()
material.fragmentNode = positionLocal.mul(4.9999).fract().step(0.5)
const mesh = new THREE.Mesh(new THREE.BoxGeometry(), material)
scene.add(mesh)
Example 2 : Ringed Cube
const material = new THREE.NodeMaterial()
material.fragmentNode = positionLocal.length().mul(15).fract().step(0.5)
const mesh = new THREE.Mesh(new THREE.BoxGeometry(), material)
scene.add(mesh)
Example 3 : Animated Resizing Rings
const main = Fn(() => {
const p = positionLocal.toVar()
p.mulAssign(5)
p.assign(p.fract().sub(0.5))
p.assign(length(p))
p.assign(sin(p.mul(10).add(time)))
p.assign(abs(p))
p.assign(step(0.5, p))
return p
})
const material = new THREE.NodeMaterial()
material.fragmentNode = main()
const mesh = new THREE.Mesh(new THREE.PlaneGeometry(), material)
scene.add(mesh)
Example 4 : Psychedelic Swirl
const main = Fn(() => {
const p = positionLocal.toVar()
p.assign(rotateUV(p.xy, time, vec2()))
p.assign(length(p.mul(5)).sub(atan(p.zy, p.zx)).mul(5))
p.sinAssign()
p.mulAssign(5)
p.assign(vec3(p.x.add(sin(time).mul(5)), p.y.add(cos(time).mul(5)), 0))
return p
})
const material = new THREE.NodeMaterial()
material.fragmentNode = main()
const mesh = new THREE.Mesh(new THREE.PlaneGeometry(), material)
scene.add(mesh)































