OpenSceneGraph三维渲染引擎设计与实践
文章平均质量分 72
某吃货敲代码
敲代码,程序媛媛
展开
-
OSG学习笔记6—鸟瞰图相机
// osg4_25.cpp : 定义控制台应用程序的入口点。//鸟瞰图相机//新建一个相机对象,并且设置它的投影矩阵为正交投影,设置观察位置在整个模型数据的正上方(Z+方向),构成一种鸟瞰图的效果//产生目标场景视图的变化过程类似于用相机拍照://步骤如下://1.设置相机位置:视点变换//2.调整物体位置:模型变换(OSG中通过某一对象子节点树中多个Transform节原创 2016-04-25 22:28:57 · 3904 阅读 · 3 评论 -
关于OSG中各种变换的理解
最近学习OSG到第7章观察我们的世界,与之前学习的OpenGL有一些区别,当然学OpenGL时就一直不太懂各种坐标系以及变换。看了很久,现将内容整理如下。内容来自《OpenGL编程指南》+《OpenSceneGraph三维渲染引擎设计与实践》一、OpenGL中视图计算机图形学的要点就是创建三维物体的二维图像,因为要在屏幕上显示,所以必须是二维的。我理解就是要让屏幕里的东西看起来是三维的。原创 2016-04-27 15:39:05 · 7391 阅读 · 3 评论 -
OSG学习笔记13Pick点选物体
OSG鼠标单击点选事件的实现。单击牛模型后模型上的白线消失。原创 2016-09-12 14:54:29 · 4670 阅读 · 4 评论 -
OSG学习笔记12-期末大作业(包含交互、纹理、光照)
这是一个期末大作业,很low的大作业。按老师的要求要实现纹理,光照,交互等,还好可以用OSG,用OpenGL的话不知道要写多少代码。这个代码主要就是实现了球体的贴图,添加了一个光照,还有通过键盘来操控球体的功能。原创 2016-06-13 18:46:49 · 2494 阅读 · 5 评论 -
OSG学习笔记5—使用开关节点
// osg_4_23.cpp : 定义控制台应用程序的入口点。//使用开关节点//开关节点的用法,以及使用开关节点的更新回调完成了动态的子节点切换过程。 //一共切换两次,一次在120帧时,一次在240帧时//关于节点的实现:判断某个子节点对于的开关值,当开关值为false时,不执行其accept()函数,因此该子节点及其子树也不会被访问器遍历到。//否则执行正常的访问器推进原创 2016-04-23 16:08:44 · 2234 阅读 · 0 评论 -
OSG学习笔记10-简单的操作器设置(漫游小区基础)
终于看到《OpenSceneGraph三维渲染引擎设计与实践》第八章啦,结合另一本书《OpenSceneGraph3.0三维视景仿真技术开发详解》上的例子,还有有的一个小区的.ive二进制模型。做了一个简单的漫游器。三维场景中的漫游器改变的是观察者(也就是相机)的位置和观察方向,以实时修正场景相机(Camera类)的观察矩阵的方式实现平滑的导航浏览。相机在世界中的位置姿态矩阵,等于相机观察原创 2016-05-07 19:18:12 · 4814 阅读 · 1 评论 -
OSG学习笔记9-处理键盘事件
//处理键盘事件#include"stdafx.h"#include#include#include#includeclass KeyboardHandler :public osgGA::GUIEventHandler//人机交互事件处理器{public: //重构父类GUIEventHandler.handle,事件处理函数,自定义交互操作, //参数1:当前传入此处原创 2016-05-06 21:14:11 · 5272 阅读 · 1 评论 -
OSG学习笔记8-多视景器系统
//多视景器系统,打开了3个窗口,每个窗口对应一个视图对象viewer,并使用多视景器系统来管理这3个视图。#include "stdafx.h"#include#include#includeint main(int argc, char**argv){ osg::ref_ptr view1 = new osgViewer::View; view1->setUpViewIn原创 2016-05-06 19:08:04 · 1425 阅读 · 0 评论 -
OSG学习笔记7—投影墙显示
// OSG_5_6.cpp : 定义控制台应用程序的入口点。//投影墙显示:4个视景器辅助相机拼接在一起,同时显示一个场景的效果。#include "stdafx.h"#include#include#include/*用于创建一个与相机对应的图形设备,也是窗口设备,其属性参数使用特性类Traits定义,并返回这个相机对象。*/osg::Camera* creatCamera原创 2016-05-06 18:36:49 · 2760 阅读 · 0 评论 -
OSG学习笔记4—使用空间变换节点
世界坐标系是系统的绝对坐标系,在没有建立用户坐标系之前,所有的坐标都是以该坐标的原点来确定各自的位置的。OSG中的坐标系是X正向向右,Y轴正向向里,Z轴正向向上OpenGL的坐标系是X正向向右,Y轴正向向上,Z轴正向向外// osgStudy4_21(1).cpp : 定义控制台应用程序的入口点。//使用空间变换节点//1、根据用户视点自动进行变换的AutoTransf原创 2016-04-21 20:14:43 · 1927 阅读 · 0 评论 -
OSG学习笔记11 物体控制—对点选物体进行平移、缩放、旋转
使用鼠标点选当前场景中的物体,然后旋转、平移、缩放。使用了两个自带的Dragger,TrackballDragger实现旋转,选中哪一个环就使物体沿哪个环渲染TabBoxDragger:盒式拖曳器,可在六个平面上实现缩放,平移物体操作类osgManipulator的工作方式:操作Dragger,改变Module原创 2016-05-16 21:29:30 · 4916 阅读 · 0 评论 -
OSG学习笔记3-使用回调实现旋转动画
这是有关节点的更新与事件回调,OSG中的节点主要是使用回调Callback来完成用户临时定义的,需要每帧执行的工作。回调时一种用户编写的功能模块,它可以作为一个参数传递给其他功能模块,从而实现一些底层系统事件的响应和处理。C++使用函数指针将回调函数的地址作为其他系统或用户函数的传入参数。OSG节点回调分类:1、更新回调 Update Callback:每一帧系统遍历到当前节点时都会被原创 2016-04-21 15:37:27 · 3433 阅读 · 1 评论 -
OSG学习笔记2—节点属性访问器
看了好久,先捡了一些C++基础知识,还是看不懂代码,理解不了流程,算了,明天再来,回寝室洗洗睡了。// osgStudy4_20.cpp : 定义控制台应用程序的入口点。//节点属性访问器//——C++构造函数初始值列表————//InfoVisitor():osg::NodeVisitor(TRAVERSE_ALL_CHILDREN), _indent(0){}//构造函数初原创 2016-04-20 22:15:02 · 2363 阅读 · 0 评论 -
OSG学习笔记0——解决OSG读obj模型问题
最近刚刚开始学习osg,拿到的任务是读取一个obj模型,然后对该模型进行一些移动,旋转等操作。第一步就卡住了。不知道如何读取obj模型,百度不到,估计问题太幼稚了。同学说需要自己写一个OpenGL的程序,来读。后来问了我们老王boss,告诉我OSG有读obj的插件。看书上也有。就开始操作。遇到的第一个问题是路径设置不正确,自己太菜了,原创 2016-04-18 15:28:19 · 13416 阅读 · 19 评论 -
OSG学习笔记1——智能指针
// osgStudy4_19.cpp : 定义控制台应用程序的入口点。//智能指针对场景的引用计数,看到这里的时候几乎就想放弃了,智能指针什么鬼,在大神的鼓励下,要搞科研的人怎么能不学会钻研呢!其实还是不是特别懂,但好像稍微理解一点点了,又参考了一下C++Primer。//——————C++的动态内存和智能指针————————————//动态分配的对象的生存期与它们在哪里创建时无关的原创 2016-04-20 09:58:15 · 1041 阅读 · 0 评论 -
OSG程序编译与开发过程中的问题(不断更新)
记录日常开发调试的问题~原创 2016-04-21 14:24:09 · 3968 阅读 · 1 评论