#javascript #three.js #vertex-shader #particles
#javascript #three.js #вершинный шейдер #частицы
Вопрос:
Я пытался отобразить округлые частицы, используя THREE.PointsMaterial
и передавая текстуру холста в map
параметре. Работает нормально, но я не знаю, как использовать VertexColors, чтобы каждая частица имела свой цвет.
Короче говоря: этот код отображает разноцветные квадратные частицы:
var material = new THREE.PointsMaterial({
vertexColors: THREE.VertexColors,
});
И это отображает одноцветные круглые частицы:
var material = new THREE.PointsMaterial({
vertexColors: THREE.VertexColors,
map: createCanvasTexture(), // returns texture painted on Canvas
});
Есть ли какой-нибудь способ передать VertexColors в map
?
Или я должен использовать vertexShader
fragmentShader
? (Вероятно, хорошее решение, когда мне также нужно анимировать позицию). Но как передать туда цвета?
Комментарии:
1. Добавьте
color
атрибут буфера в свою геометрию и установитеvertexColors: true
материал точек. И объедините оба ваших варианта:new THREE.PointsMaterial( { vertexColors: true, map: createCanvasTexture() } );
2. @prisoner849 когда вы применяете текстуру в,
map
она перезаписываетvertexColors
…3. Какого цвета текстура? Обычно он должен быть белым, так как материал выполняет умножение цвета текстуры и вершины по каналам.
4. @prisoner849 фу! спасибо, чувак! белая текстура заставила это работать! 🙂 большое спасибо!