我目前正在研究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
答案 0 :(得分:1)
如果没有您希望实现的效果示例,很难提供答案,但这里有两个选项:
使用添加剂混合创建从太阳发出的粒子效果
使用高光贴图创建材质。
答案 1 :(得分:1)
颜色通过以下等式计算:
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。但要注意许可证,应该有免费的资源。