xxxxxxxxxx
let font
let contactShadowRenderer
let cam
let mesh
function preload() {
font = loadFont('https://fonts.gstatic.com/s/kanit/v7/nKKU-Go6G5tXcr4uPiWgX6BJNUJy.ttf')
}
function setup() {
document.body.setAttribute(
'style',
'min-height: 100%; background-color: #eee; display: flex; flex-direction: column; align-items: center; justify-content: center'
)
createCanvas(600, 600, WEBGL)
pixelDensity(2)
contactShadowRenderer = createContactShadowRenderer()
contactShadowRenderer.setIntensity(0.4)
contactShadowRenderer.setSearchRadius(100)
contactShadowRenderer.setExponent(60)
cam = createEasyCam()
cam.auto_update = false
frameRate(60)
inputElt = createInput('p5*js', 'text')
inputElt.input(updateModel)
updateModel()
}
function updateModel() {
mesh = font.textToMesh(inputElt.value(), 0, 0, 100, 150, {
sampleFactor: map(inputElt.value().length, 0, 10, 0.2, 0.025, true),
})
}
function draw() {
mesh.update(1 / 60)
clear()
contactShadowRenderer.draw(() => {
clear()
background('#f5f9fa')
cam.update()
lights()
push()
mesh.draw()
pop()
push()
noStroke()
fill(255, 0)
push()
translate(0, 0, -202)
plane(900, 900)
pop()
for (const side of [-1, 1]) {
push()
translate(0, side * 202, 0)
rotateX(PI / 2)
plane(900, 900)
pop()
}
for (const side of [-1, 1]) {
push()
translate(side * 302, 0, 0)
rotateY(PI / 2)
plane(900, 900)
pop()
}
pop()
})
}