我想在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