JavaFX 3D中的可见光源

时间:2015-12-26 09:50:15

标签: java javafx 3d javafx-2 javafx-8

我目前正在研究JavaFX 3D功能,我想对太阳系进行建模。我非常成功地创建了jsonList = []; jsonList = contextJSON; // contextJSON holds the context objects that are sent by my view above print(JSON.stringify(jsonList.to_loc)); // this should give me the data of locations from respective context object print(JSON.stringify(jsonList.to_av)); // this is for for AV 类型的光源,并将其坐标设置为太阳的坐标。现在我希望看到太阳以它的光芒作为光源发光。我该怎么做?

PointLight

2 个答案:

答案 0 :(得分:1)

如果没有您希望实现的效果示例,很难提供答案,但这里有两个选项:

使用添加剂混合创建从太阳发出的粒子效果

使用高光贴图创建材质。

答案 1 :(得分:1)

来自PhongMaterial JavaDoc

  

颜色通过以下等式计算:

for each ambient light source i {
    ambient += lightColor[i]
}
for each point light source i {
    diffuse += (L[i] . N) * lightColor[i]
    specular += ((R[i] . V) ^ (specularPower * intensity(specularMap))) * lightColor[i]
}
color = (ambient + diffuse) * diffuseColor * diffuseMap
         + specular * specularColor * specularMap
         + selfIlluminationMap
     

其中:

     

lightColor [i]是光源i的颜色,

     

L [i]是从表面到光源i的矢量,

     

N是法线向量(如果存在,则将bumpMap考虑在内),

     

R [i]是关于表面法线的L [i]的归一化反射向量,

     

和V是标准化的视图向量。

如果你的PointLight坐标与你的太阳球坐标相匹配,那么L [i]。 N< 0,你没有弥漫的贡献。因此,在没有环境光的情况下,它看起来会变黑。

尝试使用sun纹理添加他们提到过的selfIlluminationMap。它应该有所帮助。

谷歌上的简短搜索给了我这个链接,可能有用:planets and sun maps。但要注意许可证,应该有免费的资源。