2013-08-25 79 views
3

我正在尝试创建具有Phong材质(对光线作出反应)属性的粒子,为了实现这一点我已经使用了“createMultiMaterialObject”,这对于比无视粒度,由于某些原因,颗粒似乎是不可思议的三角形状的其它大部分,见下图:THREE.js使用MeshPhongMaterial作为粒子材质和设置尺寸

enter image description here

这是我使用的代码:

var ringGeometry = new THREE.TorusGeometry(rad, ringSize, 1, 200, Math.PI * 2); 
materials = [ 
p2paterial = new THREE.MeshPhongMaterial({shading: THREE.SmoothShading, blending:  THREE.AdditiveBlending, transparent: true, color: ringColour, ambient: 0x000000, specular:  0xffffff, shininess: 1, vertexColors: false }), 
pmaterial = new THREE.ParticleBasicMaterial({ size: 1, transparent: true,  vertexColors: true }) 
     ]; 
singleRing = new THREE.SceneUtils.createMultiMaterialObject(ringGeometry, materials); 

任何人都可以指向我的方向我怎么才能实现最后一步,使每个粒子大小为1 - 我非常接近我想要的东西,我怀疑这只是我需要调整某处的一个选项。

+0

能告诉你一个例子吗? –

+0

添加了一个屏幕截图,显示第一手问题 –

回答

0

试试这个:

var geometry = new THREE.TorusGeometry(rad, ringSize, 1, 200, Math.PI * 2); 

var material = new THREE.MeshPhongMaterial({shading: THREE.SmoothShading, blending:  THREE.AdditiveBlending, transparent: true, color: ringColour, ambient: 0x000000, specular:  0xffffff, shininess: 1, vertexColors: false }); 
var mesh = new THREE.Mesh(geometry, material); 
scene.add(mesh); 

var material = new THREE.ParticleBasicMaterial({ size: 1, transparent: true,  vertexColors: true }); 
var particles = new THREE.ParticleSystem(geometry, material); 
scene.add(particles); 
+0

感谢您试图回答我的问题,但不幸的是,这产生了相同的结果,我只是以奇怪的三角形形状结束。我不知道它是否重要,但直接在创建Torus Geometry I循环后,它随机移动顶点,如果它有帮助,我也可以发布此代码? –

+0

我做了一个测试用例小提琴,上面的代码完全显示了问题:http://jsfiddle.net/AL2QN/ –

0

我从来没有与three.js所工作,但我与你拨弄瞎搞,我得到的东西,在你的TorusGeometry调整RadialSegments的价值看起来更像颗粒声明....

var geometry = new THREE.TorusGeometry(10, 10, .5, 200, Math.PI * 2); 

http://jsfiddle.net/sJZeH/

+0

感谢您的输入。不幸的是,它们确实看起来像颗粒,但它们没有Phong材料,这就是为什么它们是黑色的,这意味着它们将在所有照明条件下都可见。 –

+1

粒子系统显示像广告牌的精灵类型 - 我不认为你可以得到像它的材料phong,除非你写一些自定义阴影。 – zz85