osg创建灯光
添加光照
osg::ref_ptr<osg::Node> MyOSGLoadEarth::CreateNode()
{
osg::ref_ptr<osg::Group> _root = new osg::Group; //定义并读取高程文件
//真实高程文件名称为:ASTGTM2_N34E110_dem.tif
//属于特殊的tiff格式,GEOTiff
//读取的时候使用osg的gdal插件进行读取,所以在路径后面加上了.gdal
//.gdal后缀名只要在这里加就可以了,真实的高程文件后缀名不需要修改
osg::ref_ptr<osg::HeightField> heightMap = osgDB::readHeightFieldFile("G:\\ASTER.GDEM.V2-DEM_sn\\ASTGTM2_N34E110_dem.tif.gdal"); //创建一个叶结点对象
osg::ref_ptr<osg::Geode> geode = new osg::Geode; if (heightMap != nullptr)
{
//由于原始数据过大,创建三维对象会失败,所以重新构造一个对象
//相当于数据抽稀了一次。当然,可以直接把原图使用特殊工具裁了
//创建一个新的HeightField对象,用来拷贝heightMap
osg::ref_ptr<osg::HeightField> heightMap1 = new osg::HeightField;
//从原对象中拷贝一些熟悉过来
heightMap1->setOrigin(heightMap->getOrigin());
heightMap1->setRotation(heightMap->getRotation());
heightMap1->setSkirtHeight(heightMap->getSkirtHeight());
//XY方向的间隔设置为原来的两倍,
heightMap1->setXInterval(heightMap->getXInterval() * );
heightMap1->setYInterval(heightMap->getYInterval() * );
//设置新的高程数据量的行列数目为原来的一半
heightMap1->allocate(heightMap->getNumColumns()/,heightMap->getNumRows()/); //把真实的数据值放进来
for (size_t r = ; r < heightMap1->getNumRows(); ++r)
{
for (size_t c = ; c < heightMap1->getNumColumns();++c)
{
//加载的数据中XY方向的间隔是0.0002左右(经纬度偏移),3600个格子,数量级太小,高程值动辄在千级别,如果没有进行坐标转换(GPS转换成米),显示出来之后结果会严重失常。所以此处简单的给高度值除以50000(这个是按照这个tif文件来试出来的,不同高程文件可能不同)
heightMap1->setHeight(c, r, heightMap->getHeight(c * , r * )/);
}
} //添加到叶子节点中
geode->addDrawable(new osg::ShapeDrawable(heightMap1));
} _root->addChild(geode.get());
return _root.get();
}
参照:https://blog.csdn.net/woaicd/article/details/77163012
osg创建灯光的更多相关文章
- 使用OSG创建一个简单的地形
目录 1.解决方案 1) 使用TIF格式的DEM 2) 描述HeightField 2.存在问题 3.参考文档 1.解决方案 在网上参考了一些资料,使用OSG创建地形最简单的办法就是使用OSG::He ...
- 通过OSG实现对模型的日照模拟
目录 1. 加载模型 2. 光照 1) 环境反射 2) 漫反射 3) 日照方向 (1) 太阳高度角和太阳方位角 (2) 计算过程 4) 改进实现 3. 阴影 4. 太阳高度角与太阳方位角的计算 1) ...
- Swift - 一步步教你使用SpriteKit创建开发游戏项目
一,什么是SpriteKit SpriteKit是苹果公司官方出品,用于制作2D游戏的框架.这个框架具备了图形渲染和动画的功能.可以使图像或者精灵(sprite)动 起来.SpriteKit的渲染方式 ...
- 探索未知种族之osg类生物---器官初始化三
当判断到viewer中没有一个graphicContext可用时,osg就会默认的进行一次对viewer的实现操作,这样可以保证osg以后可以安心的在屏幕上进行作画.那我们就来看看这个osgViewe ...
- 【Unity】4.6 灯光
分类:Unity.C#.VS2015 创建日期:2016-04-11 一.简介 灯光(Light,也叫光源)是每一个场景的重要组成部分,用于照亮场景和对象,从而让游戏具有自己的个性和风格,比如利用灯光 ...
- SharpGL学习笔记(十一) 光源创建的综合例子:光源参数可调节的测试场景
灯光的测试例子:光源参数可以调节的测试场景 先看一下测试场景和效果. 场景中可以切换视图, 以方便观察三维体和灯光的位置.环境光,漫射光,镜面反射光都可以在四种颜色间切换. 灯光位置和摄像机位置(Lo ...
- OSG学习:矩阵变换节点示例
#include<osgViewer\Viewer> #include<osg\Node> #include<osg\Geode> #include<osg\ ...
- OSG学习:位置变换节点示例
osg::PositionAttitudeTransform节点. #include <osgViewer\Viewer> #include <osg\Node> #inclu ...
- Unity3D基础知识梳理
这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...
随机推荐
- Maven01-maven打包Web项目成war文件-tomcat脱机运行启动项目
1 执行package 2 复制 3 catalina run ,打开cmd窗口 4 输入网址 5注意要配置tomcat的 Application context为工程名字
- 《你们都是魔鬼吗》团队作业Beta冲刺---第一天
团队作业Beta冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件 ...
- CSS 相邻元素选择器
相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素.选择相邻兄弟 如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使 ...
- attention speech recognition
Attention:是一种权重向量或矩阵,其往往用在Encoder-Decoder架构中,其权重越大,表示的context对输出越重要.计算方式有很多变种,但是核心都是通过神经网络学习而得到对应的权重 ...
- node gyp编译所需要的环境
安装ms的build工具包,自带python npm install --global --production windows-build-tools
- Java设计模式的6大原则
Java设计模式的6大原则 1.开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭.在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果.简单来 ...
- 什么是ARP协议?
ARP协议,全称“Address Resolution Protocol”,中文名是地址解析协议, 使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址). 在TCP/IP的网络环境下, ...
- Mac 下Wireshark 找不到网卡
终端上面,执行如下命令: sudo chgrp admin /dev/bpf* sudo chmod g+rw /dev/bpf*
- CUDA并行程序设计 开发环境搭建与远程调试
课题需要用到GPU加速.目前使用的台式电脑只有核心显卡,而实验室有一台服务器装有NVIDIA GTX980独显.因此,想搭建一个CUDA的开发环境,来实现在台式机上面开发cuda程序,程序在服务器而不 ...
- H3CNE学习4 命令行简介
一.命令 1.简单命令 2.给路由器接口配置IP地址 3.常用命令 4.删除配置