创建地形
时间:2021-08-21
本文章向大家介绍创建地形,主要包括创建地形使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#include <Windows.h>
#include <iostream>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osg/Texture2D>
#include <osg/ShapeDrawable>
#pragma comment(lib,"osgViewerd.lib")
#pragma comment(lib,"osgDBd.lib")
#pragma comment(lib,"osgd.lib")
osg::Node* createHeightField(std::string height_path, std::string texture_path)
{
osg::Image* height_image = osgDB::readImageFile(height_path);
osg::ref_ptr<osg::HeightField> height_field = new osg::HeightField();
height_field->allocate(height_image->s(), height_image->t());
height_field->setOrigin(osg::Vec3());
height_field->setXInterval(30);
height_field->setYInterval(30);
height_field->setSkirtHeight(10.0f);
for (int r = 0; r < height_field->getNumRows(); r++)
{
for (int c = 0; c < height_field->getNumColumns(); c++)
{
double h = *height_image->data(c, r)*5.0;
height_field->setHeight(c, r, h);
}
}
osg::Geode* geode = new osg::Geode();
osg::ref_ptr<osg::ShapeDrawable> shape = new osg::ShapeDrawable(height_field.get());
geode->addDrawable(shape);
osg::ref_ptr<osg::Image> texture_image = osgDB::readImageFile(texture_path);
osg::ref_ptr<osg::Texture2D> texure = new osg::Texture2D();
texure->setImage(texture_image);
texure->setDataVariance(osg::Object::DYNAMIC);
geode->getOrCreateStateSet()->setTextureAttributeAndModes(0, texure.get(), osg::StateAttribute::ON);
return geode;
}
int main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> group = new osg::Group();
std::string height_path = "C:\\Qt\\height.png";
std::string texture_path = "C:\\Qt\\height.png";
group->addChild(createHeightField(height_path, texture_path));
viewer.setSceneData(group);
viewer.setUpViewInWindow(100, 100, 800, 600);
return viewer.run();
}
原文地址:https://www.cnblogs.com/shiguoliang/p/15169228.html
- Kit 3D 更新
- Enterprise Library深入解析与灵活应用(5):创建一个简易版的批处理执行器,认识Enterprise Library典型的配置方式和对象创建方式
- 晚上好啊!这是今天人工智能精选要闻
- 构建Flex应用的10大误区
- Flex的起步推动新语言学习
- 简单科普云计算相关内容
- Silverlight初级教程-开发工具
- WCF的Binding模型之五:绑定元素(Binding Element)
- 2018年物联网发展趋势
- Silverlight初级教程-概述
- WCF的Binding模型之四:信道工厂(Channel Factory)
- 如何做一个好的前端重构工程师
- 云计算是否真的对企业来说无所不能?
- 科协带你开个2017年科技世界的总结会!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python爬取NBA虎扑球员数据
- 发现一个好看的手机壁纸网站,撸代码的手已经饥渴难耐了
- 手把手用python教你拿即时的卫星影像装饰你的桌面
- PyCharm2019亲测破解方式
- :: 是什么语法?
- 支付宝二面:Mybatis接口Mapper内的方法为啥不能重载吗?我直接懵逼了...
- Windows系统中使用Linux命令(可以批量下载Modis数据)
- Python制作桑基图(我承认我低估了这个教程)
- 几个好看的Seaborn图样~(虽然官方配色一般般,但我还是忍不住夸它)
- GDAL读取MAIAC的HDF文件(熟肉)
- Google Earth Engine(GEE)-谷歌地球引擎的大致Python入门
- 谷歌地球引擎(Google Earth Engine)之数据初探(栅格和矢量)
- Python-gdal离线文档下载
- 利用python把shp文件写入PostgresSQL数据库
- python调用cmd运行GDAL报错解决:ERROR 1: PROJ