首先粒子在地球上位置摆放很简单:

//传入的经纬度坐标
osg::Vec3d geoPoint; const SpatialReference* latLong = SpatialReference::get("wgs84");
//偏移在地球上的点
GeoPoint point(latLong, geoPoint.x(), geoPoint.y(), geoPoint.z(), eMode); osg::Matrix matrixGood; point.createLocalToWorld(matrixGood); //添加了spark里的osg::MatrixTransform直接设置矩阵就OK了
pMatrix->setMatrix(matrixGood);

  

Spark粒子在跟踪节点移动时候,有两种方式:

  1. 被一个MatrixTransForm节点添加,直接移动MatrixTransForm节点

这时候会有一些效果出现问题,比如,粒子移动时,想要spark已经喷射出的粒子不随MatrixTransForm移动的话就不能够实现。

我们来分析:spark是作为一个可渲染叶节点osg::Drawable添加进osg中的,这是一个整体。所以当它的父节点移动时,它必然移动。

2.基于以上原因,我们要移动的就应该是spark的喷射器了,这一点在osgspark的例子中也给出了方式,将spark直接加入到一个不动的场景节点中,然后在每帧更新的时候更新spark中的喷射器位置。

这个如果spark需要偏移不是特别远的时候也是可以使用的。

但是在osgEarth中使用的话,由于偏移的精度原因(或其他不知道的原因)会造成spark粒子出现问题:喷出的粒子不做公告牌运算了···

结合以上方式,经过不断测试,我发现可以将spark节点添加进MatrixTransForm中,并只在初始化时偏移一次MatrixTransForm到地球表面上,然后需要移动时,再偏移spark的相对位置。。。这样出来的效果是最好的。

那么现在就是要不断做地球经纬度偏移在xyz中的转换了

[原][osg][osgEarth][粒子特效]关于粒子特效库在osgEarth中,位置摆放问题,跟踪节点移动问题的更多相关文章

  1. 【Unity Shaders】使用Unity Render Textures实现画面特效——建立画面特效脚本系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  2. osg fbx模型删除模型中的某几个节点,实现编辑模型的功能

    fbx model element count:80 三维视图: {三维} 4294967295 osg::MatrixTransform1 基本墙 wall_240 [361750] 4294967 ...

  3. [原][osg][粒子特效]spark粒子特效生成流程

  4. 基于HTML5 Canvas粒子效果文字动画特效

    之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想要展示的文字,回车后即可在canvas上绘制出粒子效果的 ...

  5. JS实现粒子拖拽吸附特效-sunziren

    特效的效果就如同本页面的背景一样,有粒子随机移动.连结,甚至是吸附到你的鼠标周围. 代码如下,只要引入JQuery和一小段JS代码就可以了.本质上用到了Html5的canvas <script ...

  6. WordPress鼠标点击特效和粒子插件

    鼠标特效 将下面代码复制到外观-主题编辑器-主题页脚(footer.php)代码<?php wp_footer(); ?>上方. <script type="text/ja ...

  7. canvas特效-文字粒子

    具体的效果 https://www.ui.cn/detail/393461.html 实现类似的动效 要求: 1.文字内容可以自定义 2.粒子的运动轨迹 是曲线,返回是按照 原运动轨迹 3.粒子 堆叠 ...

  8. [原][osg][osgEarth]osg::Matrix 父子节点的变化关系

    //osg::Matrix offsetmatrix 计算出子节点在父节点下的绝对坐标 //osg::Matrix offposition 用来计算当前节点相对父节点的位置 osg::Matrix o ...

  9. [原][osg][osgEarth]EarthManipulator关于oe漫游器的handle部分解读以及修改(仿照谷歌,修改oe漫游器中focal(视角切换)功能 续 二)

    bool EarthManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) ...

随机推荐

  1. Leetcode: Construct Binary Tree from Preorder and Inorder Transversal

    Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that ...

  2. VS2013发布网站详细步骤

    以下是我发布网站的时候,搜索到的可以使用的办法,同样适用于vs2013(已经尝试). 1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: V ...

  3. Zookeeper使用实例——分布式共享锁

    前一讲中我们知道,Zookeeper通过维护一个分布式目录数据结构,实现分布式协调服务.本文主要介绍利用Zookeeper有序目录的创建和删除,实现分布式共享锁. 举个例子,性能管理系统中,告警规则只 ...

  4. python进程同步,condition例子

    #coding=utf-8import multiprocessing as mpimport time def consumer(cond):    with cond:        print ...

  5. 学习Linux的正确姿势

    学习Linux的正确姿势 端正学习态度1.Linux不等于骇客(or Cracker).当然众所周知很多“黑客工具”都是Linux平台上的,我帮助过很多Linux小白发现他们殊途同归都是朝着类似Air ...

  6. Cocoa 初识

    1,判断程序是否第一次启动 OC: if (![[NSUserDefaults stringOfKeyInStandardDefaults:FirstOpenApp] boolValue]) { [s ...

  7. SQLSERVER 数据从一张那个表复制到另一张表

    insert into 表名1 ( 字段A ,字段B ,字段C) SELECT 字段A ,字段B ,字段C FROM 表名2 (where条件看情况而定)

  8. JavaScript 装饰者模式(this运用)

    例: function ConcreteClass() { this.performTask = function () { this.preTask(); console.log('doing so ...

  9. 牌型种数|2015年蓝桥杯B组题解析第七题-fishers

    牌型种数 小明被劫持到X赌城,被迫与其他3人玩牌. 一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张. 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得 ...

  10. TeeChart取消3D

    tChart1.Aspect.View3D = false;//此属性默认是true 3d的效果 2d平面的效果 题外话,在使用控件的时候,需要注意: 在TChart控件上增加Series,   se ...