Particle 만들 때 필요한 요소
const particlesGeometry = new THREE.SphereGeometry(1,32,32)
const particlesMaterial = new THREE.PointsMaterial({
size: 0.02,
sizeAttenuation: true
})
const particles = new THREE.Points(particlesGeometry,particlesMaterial)
scene.add(particles)
const particlesGeometry = new THREE.BufferGeometry()
const particlesMaterial = new THREE.PointsMaterial({
size: 0.1,
sizeAttenuation: true
})
const count = 5000
const positions = new Float32Array(count*3)
for(let i=0;i<count*3;i++){
positions[i] = (Math.random()-0.5)*100
}
particlesGeometry.setAttribute('position', new THREE.BufferAttribute(positions,3))
const particles = new THREE.Points(particlesGeometry,particlesMaterial)
scene.add(particles)
particlesMaterial.color = new THREE.Color('#ff88cc')
/**
* Textures
*/
const textureLoader = new THREE.TextureLoader()
const particleTexture = textureLoader.load('/textures/particles/2.png')
// ...
particlesMaterial.map = particleTexture
// particlesMaterial.map = particleTexture
particlesMaterial.transparent = true
particlesMaterial.alphaMap = particleTexture
particlesMaterial.alphaTest = 0.001
// particlesMaterial.alphaTest = 0.001
particlesMaterial.depthTest = false
// particlesMaterial.alphaTest = 0.001
// particlesMaterial.depthTest = false
particlesMaterial.depthWrite = false
// particlesMaterial.alphaTest = 0.001
// particlesMaterial.depthTest = false
particlesMaterial.depthWrite = false
particlesMaterial.blending = THREE.AdditiveBlending
const positions = new Float32Array(count * 3)
const colors = new Float32Array(count * 3)
for(let i = 0; i < count * 3; i++)
{
positions[i] = (Math.random() - 0.5) * 10
colors[i] = Math.random()
}
particlesGeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3))
particlesGeometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))
particlesMaterial.vertexColors = true
for(let i=0;i<count;i++){
const i3 = i*3
const x = particlesGeometry.attributes.position.array[i3]
particlesGeometry.attributes.position.array[i3+1] = Math.sin(elapsedTime+x)
}
particlesGeometry.attributes.position.needsUpdate= true
https://17-particles-gffx3v0l5-hwangsangjins-projects.vercel.app/