2013-08-25 113 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