Light---加载场景无灯光原因

在Unity3D中,若场景在编辑器加载时出现无灯光现象,原因可能是选择了GI realtime实时光照。为解决此问题,可以不勾选Window>>Lighting>>Scene面板的auto选项,防止重新加载时灯光未渲染。若需烘焙灯光,可点击build按钮保存光照贴图信息,确保加载后亮度正常。此外,Generate Lighting选项也可用于重新整理场景的光照信息。
摘要由CSDN通过智能技术生成

1.首先只是在编辑器才可能无灯光,导出是正常的,但是由于给我们调试带来不便,我们决定修改他

原因如下:

选择的光照是GI realtime实时光照,编辑器在当前场景时,它的灯光是已经渲染好了,但重新加载的时候灯光没有进行渲染

解决方法一如下:

Window>>lighting>>Scene面板>>右下角build按钮前,取消勾选auto,这时候是没有烘焙灯光的情形,重新加载场景后不再会变暗。

如果需要烘培灯光,则点击build按钮即可,这时候将保存光照贴图信息,重新加载后也不会再变暗。

解决方法二:

同样目录下:点击后面的Generate Lighting,这时应该时重新整理场景里(我也不知道为啥)


以下是一个简单的C++代码示例,使用VTK实现类似CloudCompare中的Sun Light灯光效果: ```cpp #include <vtkSmartPointer.h> #include <vtkPolyDataReader.h> #include <vtkPolyDataMapper.h> #include <vtkActor.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkLight.h> #include <vtkCamera.h> int main(int argc, char* argv[]) { if (argc != 2) { std::cerr << "Usage: " << argv[0] << " inputPolyDataFile" << std::endl; return EXIT_FAILURE; } const char* inputFilename = argv[1]; vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New(); reader->SetFileName(inputFilename); vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New(); mapper->SetInputConnection(reader->GetOutputPort()); vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New(); actor->SetMapper(mapper); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(actor); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->AddRenderer(renderer); vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow); vtkSmartPointer<vtkLight> light = vtkSmartPointer<vtkLight>::New(); light->SetLightTypeToSceneLight(); light->SetPosition(-1.0, 0.0, 0.0); light->SetFocalPoint(0.0, 0.0, 0.0); light->SetColor(1.0, 1.0, 1.0); light->SetIntensity(1.0); renderer->AddLight(light); vtkSmartPointer<vtkCamera> camera = vtkSmartPointer<vtkCamera>::New(); camera->SetPosition(0.0, 0.0, 1.0); camera->SetFocalPoint(0.0, 0.0, 0.0); renderer->SetActiveCamera(camera); renderWindow->Render(); interactor->Start(); return EXIT_SUCCESS; } ``` 这个示例代码将一个PolyData文件加载到一个Actor中,并在场景中添加了一个Sun Light灯光和一个摄像机。你可以根据自己的需要修改灯光和摄像机的参数来获得更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值