我想在three.js中使用粒子系統創建一個形狀圓圈。我檢查了一些他們使用ParticleCanvasMaterial和Texture(程序:函數)的東西,但不再支持這些東西。我通過座標系去,並試圖設置像素,的的pY值,但它沒有工作,好耶這是我的代碼的任何幫助將不勝感激..使用粒子創建一個形狀
感謝
var scene, camera, renderer;
var controls, guiControls, datGUI;
var spotLight, texture;
var particleCount = 1800;
var particles, pMaterial, particleSystem;
var win_h = $(document).height();
var win_w = $(document).width();
function init() {
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);
renderer = new THREE.WebGLRenderer();
renderer.setClearColor(0xB0C5E6);
renderer.setSize(win_w, win_h);
renderer.shadowMap.enabled = true;
renderer.shadowMapSoft = true;
controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.addEventListener('change', render);
var canvas = document.createElement('canvas');
canvas.width = 100;
canvas.height = 100;
var context = canvas.getContext('2d');
context.beginPath();
context.arc(0, 0, 1, 0, Math.PI * 2, true);
context.fill();
particles = new THREE.Geometry();
texture = new THREE.TextureLoader().load('ry.png');
pMaterial = new THREE.PointsMaterial({
color: 0xB0C5E6,
size: 6,
map: texture,
blending: THREE.AdditiveBlending,
transparent: true
});
for (var p = 0; p < particleCount; p++) {
var pX = (p * win_w)/ particleCount ;
var pY = 5;
var pZ = Math.random() * 500 - 750;
particle = new THREE.Vector3(pX, pY, pZ);
particles.vertices.push(particle);
}
particleSystem = new THREE.Points(particles, pMaterial);
$('#webGL-con').append(renderer.domElement);
scene.add(particleSystem);
}
function render() {
requestAnimationFrame(render);
}
function animate() {
render();
renderer.render(scene, camera);
controls.update();
requestAnimationFrame(animate);
}
init();
animate();
你的問題不是很清楚。你是否試圖用一個圓作爲粒子紋理,或者你是否試圖將粒子分佈在一個圓圈中?如果是後者,那麼你會想看看「參數方程爲一個圓」......在這種情況下,你應該能夠弄清楚如何將粒子定位成圓/弧形。您也可以使用EllipseCurve來獲取爲您生成的頂點。 – msun
好吧,假設我有1000個粒子,我必須用這些粒子形成一個圓或三角形,像[link](http://william.hoza.us/text/?t=Hello)@msu – janmesh007