标签: light

OpenGL:渲染超过8个灯,怎么样?

我应该如何在OpenGL中实现8个以上的灯?

我想有效地渲染无限量的灯.

那么,最好的方法是什么?

c++ opengl light

6
推荐指数
2
解决办法
6645
查看次数

2D照明 - 使光线不会穿过墙壁

我有一张collsion地图,有些地方我想成为光源.光源提供的光实际上是我可以看到地面的形状.它现在看起来像这样:

在此输入图像描述

所以光线穿过墙壁.我想让它看起来像这样:

在此输入图像描述

(我标记了墙壁与深黄色的碰撞)

所以当遇到墙壁时光线会停止.我想获得正确光线的形状,最好的是包含它的位图)

我的第一个想法是从光源投射光线并检查它们何时与墙壁碰撞(我知道如何做到这一点),但是我需要每隔0.001度投射一次光线,所以它太多时间来产生光线.接下来的事情是光的形状并不总是圆形,有时它可以是椭圆形或半椭圆形,甚至是三角形或圆形的一部分.一般来说,我的光点位图不会碰到任何东西,我想稍微减去它以使它看起来像第二张图像.

最后一件事,我使用了allegro 4.2.1,但之前提到的所有位图都是具有0和1的2维度数组.

Thanx任何帮助,抱歉长问题和我的英语不好.

c++ 2d bitmap light

6
推荐指数
1
解决办法
2838
查看次数

计算日光的预期色温

我有一个位置(纬度/经度)和时间戳(年/月/日/小时/分钟).

假设晴朗的天空,是否有一种算法可以松散地估算那个时间和地点的阳光色温?

如果我知道当时的天气是什么,有没有建议的方法来修改当时云量的色温?

location colors light

6
推荐指数
1
解决办法
364
查看次数

如何在Matlab中防止物体被凸轮照亮?

[此后有4个片段,其中一个应该只对阅读前两个片段感兴趣.然而,通过复制粘贴所有这些,我应该能够启动我看到的,尽管最后提供了截图.

嗨,通过启动这个main.m:

%To see if plotting a tick after setting camlight headlight will leads to
%its background becoming gray or not
%clear all
figure
arrow = arrow3D([0 0 0], [1 1 1], 'r', 0.8, 0.2, 1.5);
set(arrow, 'EdgeColor', 'interp', 'FaceColor', 'interp');
%camlight headlight %might be interesting to uncomment this line
pause(5)
surfaceHandle = rotateAxisTicks('lol','r',10,-0.3,0.5,0.5,1,1,1,0);
pause(5)
camlight headlight
%material(surfaceHandle,'default') %doesn't work
%surfaceHandle1.FaceLighting = 'none' %doesn't work
Run Code Online (Sandbox Code Playgroud)

,它使用该函数rotateAxisTicks.m

function surfaceHandle = rotateAxisTicks(str,color,fontsize,zmax,graduSpace,boxHeight,perc,labelNumber,axnumber,thetaInput)
%https://stackoverflow.com/questions/9843048/matlab-how-to-plot-a-text-in-3d
    %zmax : give it …
Run Code Online (Sandbox Code Playgroud)

graphics matlab plot shadow light

6
推荐指数
1
解决办法
108
查看次数

Android光传感器不会触发事件

使用光传感器时,我遇到了一个永远不会触发onSensorChanged()事件的问题.原因是当监听器被注册时,如果勒克斯值保持不变,则没有变化,因此没有事件.但是,我仍然想知道勒克斯的价值!恒定勒克斯值0和常数60,000之间存在差异!

经过一些研究,我意识到没有办法直接读取传感器的勒克斯值.那么如果lux值是常数,如何获得lux值,从而永远不会触发事件?有没有办法最初设置一个假值(如-1),所以总会发生一个事件?或者我在考虑这个错误?

任何帮助将不胜感激!

events android light android-sensors

5
推荐指数
1
解决办法
4370
查看次数

如何在Android设备上找到屏幕状态?

有没有办法找出Android设备屏幕是否没有广播接收器?我想通过警报管理器调用的服务在设备上进行分钟间隔更新.我也想保持电池寿命.因此,如果设备屏幕打开,则更新服务将运行.

我用这段代码找到了解决问题的方法:

PowerManager powermanager;
powermanager = (PowerManager) this.getSystemService(Context.POWER_SERVICE); 
if (powermanager.isScreenOn())
    {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

android screen status light

5
推荐指数
1
解决办法
4472
查看次数

在运行时添加和删除三个.js 灯

如何在运行时在three.js 中添加和删除不同的灯光类型?

我有一些复选框,每个复选框都代表一种灯光类型,我想在选中复选框时向场景添加某种灯光类型,并在未选中时删除灯光。

我试过:scene.remove(light)and light.visible = false,但没有用。

light three.js

5
推荐指数
1
解决办法
5524
查看次数

镜面反射不正确

我正在尝试为我的硕士学位(以及我的技能)制作一个小型 3D 引擎。我对镜面反射有疑问。(我很抱歉插图图像的链接,但我还没有足够的声誉)。所有来源都可以在我的 GitHub 上找到:DWRenderer

问题的图像

在这里,我们正对着物体,但相机和灯光都在前面。正如我们所看到的,物体后面有一个反射。

为了描述实际参数,所有计算都是在世界空间中进行的(通常......对于这个问题,我有疑问)。我将相机放在位置 vec3(0, 0, 3) 进行测试,光线只是 vec3(1.2, 1, 2) 处由立方体表示的点。我在 Ubuntu 下使用 Qt 5.4 和 OpenGL 4.1 以及 Nvidia 驱动程序。

这是我的顶点着色器:

#version 410 core

layout (location = 0) in vec3 position;
layout (location = 1) in vec3 normal;

out vec3 Normal;
out vec3 FragPos;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
uniform mat3 normalMatrix;

void main()
{
    gl_Position = projection * view * model * vec4(position, 1.0f);
    FragPos = vec3(model * vec4(position, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt glsl light

5
推荐指数
1
解决办法
1386
查看次数

为什么阴影会跨过 Three.js 中的材质?

我有一个渲染 3D 模型的 Three.js 场景。我正在使用 aDirectionalLight在该模型上投射阴影。

我看到发生的是针对模型的梯度步进效果,就好像该模型由许多子模型组成,每个子模型都有自己的轻微阴影。

下面是效果截图:

梯度步进

为什么会发生这种情况以及如何预防?

一些不同的代码片段 - 这个场景发生了很多事情,所以我试图突出显示重要的部分:

相机和定向光源:

// Camera
camera = new THREE.PerspectiveCamera( 30, (window.innerWidth / window.innerHeight), 1, 10000 );
camera.position.x = 1000;
camera.position.y = 50;
camera.position.z = 1500;
scene.add( camera );

// LIGHTS
var lightFront = new THREE.DirectionalLight( 0xffffff, 0.7 );
lightFront.position.x = 120;
lightFront.position.y = 120;
lightFront.position.z = 150;
lightFront.castShadow = true;

lightFront.shadow.camera.left = -6;
lightFront.shadow.camera.right = 6;
scene.add( lightFront );
Run Code Online (Sandbox Code Playgroud)

材料是 a THREE.Mesh,具有:

material.normalScale = new THREE.Vector2( 1, …
Run Code Online (Sandbox Code Playgroud)

javascript 3d light three.js

5
推荐指数
1
解决办法
225
查看次数

AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM 不起作用

编辑:在底部更新

我在应用程序中调用它onCreateAppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)

然后,当我进入设备设置(设置 -> 显示 -> 夜间模式(开关:开/关))时,我将恢复我的应用程序,但不会应用主题。无论我在设备设置中打开或关闭夜间模式,都不会应用主题。

false我还添加了一个断点,并检查了即使设备设置中的深色模式处于打开状态,以下内容也会返回给我(注意:应用程序是在深色模式关闭的情况下启动的)。

fun isNightMode(app: Application): Boolean {
     return when(app.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
         Configuration.UI_MODE_NIGHT_NO -> false
         Configuration.UI_MODE_NIGHT_YES -> true
         else -> false
     }
 }
Run Code Online (Sandbox Code Playgroud)

当我从设备设置更改主题时,资源似乎application's没有更新。

为了调试目的,我重写了 Application 类中的以下函数:

override fun onConfigurationChanged(newConfig: Configuration?) {
   super.onConfigurationChanged(newConfig)
} 
Run Code Online (Sandbox Code Playgroud)

它正在被调用。

编辑:看起来这就是导致问题的原因。在应用程序类中有这个:

override fun attachBaseContext(base: Context) {
   val locale = Locale("de", "DE")

   Locale.setDefault(locale)

   val resources = base.resources
   val configuration = Configuration(resources.configuration)

   configuration.setLocale(locale)
   val baseContext = base.createConfigurationContext(configuration)
        
   super.attachBaseContext(baseContext)
}
Run Code Online (Sandbox Code Playgroud)

如果我删除上面的代码,它就可以工作。

android light android-dark-theme

5
推荐指数
1
解决办法
1505
查看次数