osg矩阵变换节点-----平移旋转缩放

转自:http://www.cnblogs.com/ylwn817/articles/1973396.html

平移旋转缩放这个三个是osg矩阵操作中,最常见的操作,下面给出示例以及说明

首先先了解下osg空间方向:

osg方向如左图所示,x轴表示屏幕水平方向,y轴表示和屏幕垂直方向即屏幕里面方向,z轴表示屏幕垂直方向,每个箭头指向表示正方向

下面来学习矩阵变换操作

首先平移:

#include<osgDB/ReadFile>
#include<osgViewer/Viewer>
#include<osg/Node>
#include<osg/MatrixTransform>
void main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> root=new osg::Group();
osg::ref_ptr<osg::Node> osgcool=osgDB::readNodeFile("cow.osg"); osg::ref_ptr<osg::MatrixTransform> trans=new osg::MatrixTransform();
trans->setMatrix(osg::Matrix::translate(,,));
trans->addChild(osgcool.get()); root->addChild(osgcool.get());
root->addChild(trans.get()); viewer.setSceneData(root.get());
viewer.realize();
viewer.run();
}

其中 trans->setMatrix(osg::Matrix::translate(0,0,20));就是用来平移物体,这个表示象Z轴正方向平移也就是屏幕正上方。

缩放操作:

#include<osgDB/ReadFile>
#include<osgViewer/Viewer>
#include<osg/Node>
#include<osg/MatrixTransform>
void main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> root=new osg::Group(); osg::ref_ptr<osg::Node> osgcool=osgDB::readNodeFile("cow.osg"); osg::ref_ptr<osg::MatrixTransform> trans=new osg::MatrixTransform();
trans->setMatrix(osg::Matrix::scale(0.5,0.5,0.5)*osg::Matrix::translate(,-,)); root->addChild(osgcool.get());
root->addChild(trans.get()); viewer.setSceneData(root.get());
viewer.realize();
viewer.run();

osg::Matrix::scale(0.5,0.5,0.5)表示缩放的比例,也就是原来物体的一般大小

旋转:

#include<osgDB/ReadFile>
#include<osgViewer/Viewer>
#include<osg/Node>
#include<osg/MatrixTransform>
void main()
{
osgViewer::Viewer viewer;
osg::ref_ptr<osg::Group> root=new osg::Group(); osg::ref_ptr<osg::Node> osgcool=osgDB::readNodeFile("cow.osg"); osg::ref_ptr<osg::MatrixTransform> trans=new osg::MatrixTransform;
trans->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(90.0),,,));
trans->addChild(osgcool.get()); root->addChild(osgcool.get());
root->addChild(trans.get()); viewer.setSceneData(root.get());
viewer.realize();
viewer.run();

osg::Matrix::rotate(osg::DegreesToRadians(90.0),0,1,0)该方法参数分别表示角度,x,y,z当xyz其中有值是那么物体会绕着物体旋转。当角度为正值的时候,物体绕着x,y,z箭头指向向右旋转,否则物体绕着x,y,z箭头指向向左旋转

旋转可能有理解错误,以实际效果为准

osg矩阵变换节点-----平移旋转缩放的更多相关文章

  1. osg中使用MatrixTransform来实现模型的平移/旋转/缩放

    osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...

  2. webgl学习笔记三-平移旋转缩放

    写在前面 建议先阅读下前面我的两篇文章. webgl学习笔记一-绘图单点 webgl学习笔记二-绘图多点 平移 1.关键点说明 顶点着色器需要加上 uniform vec4 u_Translation ...

  3. 【Qt官方例程学习笔记】Analog Clock Window Example (画笔的平移/旋转/缩放应用)

    这个例子演示了如何使用QPainter的转换和缩放特性来简化绘图. 值得学习的: 定时器事件ID检查: 在定时器事件中检查定时器id是比较好的实践. QPainter抗锯齿: We call QPai ...

  4. 【安卓】自己定义基于onDraw的随意动画(不不过平移/旋转/缩放/alpha)、!

    思路: 1.基于时间的显示映射.如:给定度数,显示圆弧,加上时序,就可以有圆弧动画的效果 2.给定时序. 用于驱动动画的一帧帧绘制 方案一.基于ObjectAnimator.动画运作时会调用degre ...

  5. 【Qt官方例程学习笔记】Raster Window Example(画笔的平移/旋转/缩放应用)

    这个例子显示了如何使用QPainter渲染一个简单的QWindow. 值得学习的内容 <QtGui>头文件 #include <QtGui>就可以使用Qt GUI模块中的所有类 ...

  6. OSG学习:矩阵变换节点示例

    #include<osgViewer\Viewer> #include<osg\Node> #include<osg\Geode> #include<osg\ ...

  7. View的平移、缩放、旋转以及位置、坐标系

    原创 2015年05月12日 13:15:29 标签: Android / Scroll / Scale / Translation / Rotation 24733 Android开发中,经常会接触 ...

  8. 【C#/WPF】Image图片的Transform变换:平移、缩放、旋转

    WPF中图像控件Image的变换属性Transform: 平移 缩放 旋转 即要想实现图片的平移.缩放.旋转,是修改它所在的Image控件的Transform变换属性. 下面在XAML中定义了Imag ...

  9. ARFoundation - 实现物体旋转, 平移,缩放

    ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...

随机推荐

  1. Symbiont

    http://www.weiyangx.com/209230.html Symbiont,Credit Suisse与R3携手革新贷款数据验证环节Symbiont, Credit Suisse and ...

  2. alpha版、beta版、rc版的意思

    很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫“beta版”或者 “rc版”,特别是开源软件,甚至有“alpha版”,下面来解释一下各个版本的意思. alpha版:内部测试版.α是希腊字母 ...

  3. jQuery如何判断元素是否是隐藏的?

    jQuery函数简介: is(expr) 用一个表达式来检查当前选择的元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. 注 ...

  4. POJ2342 树形dp

    原题:http://poj.org/problem?id=2342 树形dp入门题. 我们让dp[i][0]表示第i个人不去,dp[i][1]表示第i个人去 ,根据题意我们可以很容易的得到如下递推公式 ...

  5. iphone的click导致div变黑

    -webkit-tap-highlight-color这个属性只用于iOS (iPhone和iPad).当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背 ...

  6. Android多种进度条使用详解

    在这里,总结一下loading进度条的使用简单总结一下. 一.说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总给人良好的用户体验. 先 ...

  7. Windows中explorer(图形壳)

    explorer是Windows程序管理器或者文件资源管理器. 用于管理Windows图形壳.(桌面和文件管理.) 删除该程序会导致Windows图形界面无法使用. explorer.exe进程是微软 ...

  8. socket的IO多路复用

    IO 多路复用 I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. Linux Linux中的 select,poll, ...

  9. SQL Server 2008 R2 企业版/开发版/标准版(中英文下载,带序列号)

    一. 简体中文 1. SQL Server 2008 R2 Developer (x86, x64, ia64) – DVD (Chinese-Simplified) File Name: cn_sq ...

  10. MySQL通过增加用户实现远程连接数据库

    命令行进入mysql.exe所在目录 mysql -uroot -padmin 例子: grant all privileges on *.* to joe@localhost identified ...