我听说我应该使用法线而不是颜色,因为颜色已被弃用.(这是真的吗?)法线与光的反射有关,但我找不到清晰直观的解释.什么是正常的?
我正在开展一个真正需要访问环境光传感器的项目.
我在Google和Stackoverflow中搜索了很多,但找不到任何有用的信息.甚至可以这样做吗?
我还尝试通过计算相机输入的亮度来计算环境光值,但结果并不十分精确,因为相机会对图像进行大量调整,从而使结果失真.
所以我想知道如何在安装了闪光灯的Android设备的相机上按下手指时测量不同的光强度.我已经在互联网上阅读了关于曝光,光传感器等的信息,但我不知道从哪里开始:(.到目前为止,我已经制作了一个程序,使用表面支架和表面视图打开相机,也可以使用闪光灯.我把拇指放在相机上,我可以看到我的拇指变成了粉红色,拇指区域的颜色变化很小.我如何从相机中获取这些信息并将其用于其他东西,如测量心率? 非常感谢.
看看下面的图片:

蓝色框是div.现在我要做的是实现一种2.5D功能:
我希望灰色阴影有点像3D-ish.起初我想把盒子阴影值分配给"Y"轴,如下所示:
"box-shadow: -5px -5px 10px" + value.tallness + "#888"
Run Code Online (Sandbox Code Playgroud)
但结果是上面的图像.
关于如何仅在一侧制作阴影的任何想法,就像有来自某个地方的光源一样?
EXTRA - 移动的 "光源"怎么样?
好吧,我对Blender完全不熟悉,我只是在寻找一些关于如何使用python来控制它的好教程.我希望能够通过python方法添加/删除/编辑光源......这可以吗?谢谢你的建议.
如何在使用时进行验证时禁用/启用按钮IDataErrorInfo?
我正在使用MVVMGalaSoft light Framework.在我的Model类中,我实现IDataErrorInfo了显示错误消息.
public string this[string columnName]
{
get
{
Result = null;
if (columnName == "FirstName")
{
if (String.IsNullOrEmpty(FirstName))
{
Result = "Please enter first name";
}
}
else if (columnName == "LastName")
{
if (String.IsNullOrEmpty(LastName))
{
Result = "Please enter last name";
}
}
else if (columnName == "Address")
{
if (String.IsNullOrEmpty(Address))
{
Result = "Please enter Address";
}
}
else if (columnName == "City")
{
if (String.IsNullOrEmpty(City))
{
Result = …Run Code Online (Sandbox Code Playgroud) 我有个问题.我想制作一个像光源(太阳)一样工作的球体.我发现meshPhongMaterial有一个选项emissive: color,shininess: intensity但我没有设法编码太阳.有谁知道怎么做?谢谢你的回答!
我有一张有很多精灵的地图.我可以使用漫反射阴影向精灵添加材质,然后添加大量光源.但这不会给我我想要的结果.
在第一张图像中,您可以看到光源是由火把产生的.它通过"开放空间"以最佳方式扩展其光线,并且很快就被块阻挡.
这是顶层的一个很好的例子.我们可以看到某种2D定向光?请注意,房屋内的照明是由火炬再次产生的.右侧的洞穴显示了如何处理光线的更好示例.另外,注意背景中的洞,这会在洞穴中产生一些额外的光线.好像光线真的透过那里的背景.
你可以在这里清楚地看到问题.灯光会增加强度.由于某种原因,光线会在某些瓷砖周围形成一个方形边缘.此外,大量的灯光会很快导致性能问题.
我读过你可以以某种方式使用光线投射?以'开放空间'为目标?我根本没有使用着色器或游戏中的灯光的经验.我喜欢一个很好的解释,如何实现这种Terraria/Starbound照明效果.这并不意味着我说光线投射是解决方案.
在"我的世界"中,光可以行进一定量的空气块.它逐渐消失到完全黑暗.在图形设置中,您可以启用Smooth Lightning,这将(显然)平滑块上的闪电.
我想这是用着色器完成的,但我不确定.我的猜测是性能很重.但我正在考虑空气块(它们是游戏对象),也许我的逻辑错误.
注意:我喜欢有用的答案,但请提供详细说明的链接.或者在答案中提供源代码或Unity文档链接的说明.我不希望看到理论成真或其他什么.我想知道如何在Unity中实现这种照明.
看看类似的帖子,其中包含指向光线投射基础知识的文章的链接.但没有解释如何在Unity中实现这一点,而不是我想要实现的Terraria/Starbound效果:
例如,看一下这个视频,就2d灯在Starbound中的工作方式给出了非常好的印象:
https://www.youtube.com/watch?v=F5d-USf69SU
我知道这有点先进,但是玩家的闪光灯产生的点光也会被块阻挡,并通过开放空间通过.
也是我发布的.
Gamedev Exchange: https ://gamedev.stackexchange.com/questions/155440/unity-2d-shader-lighting-like-terraria-or-starbound
Unity论坛: https ://answers.unity.com/questions/1480518/2d-shader-lighting-like-terraria-or-starbound.html
我不确定这是否可行,但值得一试.我正在使用模板缓冲区来减少使用此算法的延迟渲染器中的光量过度绘制(当摄像机位于卷外时):
这将仅导致光量内的像素被着色.绘制多个灯时会出现问题.首先,由于状态变化很昂贵,因此对于每种灯光反复在廉价和昂贵的着色器之间切换可能不是最佳选择.理想情况下,我想利用模板缓冲区的所有8位,通过使用廉价着色器渲染8个轻量级,然后使用昂贵的着色器渲染8个轻量级.但是,当灯光重叠时会出现问题,因为无法分辨哪些像素属于哪些灯光.
想到的解决方案是每个灯在模板缓冲区中使用1位.因此,对于光n,在廉价通道中标记模板缓冲区中的第n位,然后在昂贵的通过期间仅渲染具有该位的像素.
我之前没有使用模板缓冲区,但从我正在阅读的内容看起来似乎不太可能.为此,我必须使用按位OR设置模板缓冲区,并且模板函数必须是按位AND.但是,我可以看到的模板缓冲区上的唯一操作是:KEEP,ZERO,REPLACE,INCR,DECR和INVERT,唯一的功能是:NEVER,ALWAYS,LESS,EQUAL,LEQUAL,GEQUAL,GREATER和NOTEQUAL.
有没有办法以某种方式使用模板缓冲区获得此OR和AND行为?如果没有,是否有另一种方法可以有效地渲染光量?
我试图使用法线贴图而不是顶点法线,我无法弄清楚我做错了哪一步.我想将光线方向转换为切线空间并从那里进行计算.首先,我将矢量法线和切线转换为视图空间.
vec3 norm_viewsp = mat3(view) * normalize(norm);
vec3 tangent_viewsp = mat3(view) * normalize(tangent);
vec3 bitangent_viewsp = cross(tangent_viewsp, norm_viewsp);
Run Code Online (Sandbox Code Playgroud)
接下来,我构建矩阵,该矩阵应执行从视图空间到切线空间的变换,并使用它来计算切线空间中光线的距离.
mat3 tbn = transpose(mat3(tangent_viewsp, bitangent_viewsp, norm_viewsp));
vec3 light_dir = light_pos - pos.xyz;
vec3 light_dir_viewsp = mat3(view) * light_dir;
v_light_dir_tansp = tbn * light_dir_viewsp;
Run Code Online (Sandbox Code Playgroud)
在片段着色器中,我然后从法线贴图中采样法线并将其与光线方向相乘.
vec3 norm = texture(normal_map, v_tex_pos).rgb * 2.0 - 1.0;
float diffuse = dot(normalize(norm), normalize(v_light_dir_tansp));
Run Code Online (Sandbox Code Playgroud)
法线贴图肯定正确加载.
结果左上角太暗,左下角太亮.
我认为问题出在光线方向的某处,但我无法发现错误.
Nore,在上面的图片中,值介于-1和1之间,这就是为什么例如法线贴图看起来太暗.
编辑:灯光位于模型的中心.如果使用顶点法线,则照明工作正常.在视图空间而不是切线空间中进行计算没有任何区别.