zoukankan      html  css  js  c++  java
  • OSG闪存

    《osg程序设计教程》
    第四章
    1.模型node与几何图元geode
    2.geometry组成
    2.1顶点Vertex,Vec3Array,setVertexArray(v.get);
    2.2颜色color,Vec4Array,setColorArray(c.get);
    2.3关联方式,geom.addPrimitiveSet(
    new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4));
    2.4法线normal,Vec3Array,setNormalArray(n.get);
    setNormalBinding(::BIND_OVERALL);
    n.push_back(osg::Vec3(0.f,-1.f,0.f);
    3.geode.addDrawable(geom.get);
    --------------------
    1.状态属性类LineWidth
    lineWidth.setWidth(10.0);
    geom.getOrCreateStateSet().
    setAttributeAndModes(lineWidth.get,
    osg::StateAttribute::ON);
    2.内置几何类型osg::Shape
    3.附录..asGeometry();
    第五章
    1.viewer.getSceneData();得到数据。
    2.键盘响应得到viewer
    addEventHandler(osgGA::GUIEventHandler);
    可以控制事件的拦截,由几个函数处理。
    要不要继续向下传递。
    3.重写handle();把参数转换为viewer
    判断事件类型GUIEventAdapter::KEYDOWN:
    viewer.getSceneData.asGroup.getChild.setNodeMask;
    4.拾取pick
    判断射线与viewer中的物体相交
    判断相交结点为我们需要的。
    5.x,y坐标通过handle参数得到
    射线
    osgUtil::LineSegmentIntersector::Intersections
    viewer.computeIntersections(x,y,intersection)
    遍历Intersections
    可能通过setName();getName();筛选结点
    第六章
    1.osg自带Trackball
    2.osgGA::MatrixManipulator专门响应控制viewer
    3.碰撞检查
    LineSegment,osgUtil::IntersectVisitor
    iv.addLineSegment(line.get);
    node.accept(iv);
    iv::HitList hlist;
    4.制作路径漫游
    时间,位置,旋转角度。
    5.mfc中osg
    去掉OnNewDocument();
    重载OnOpenDocument();
    CCoreOSG(HWND hWnd);
    initOSG();
    initManipulators(void);
    initSceneGraph(void);
    initCameraConfig(void);
    setupWindow(void);
    preFrameUpdate();
    postFrameUpdate();
    6.CView::OnEraseBkgnd(pDC);
    第七章
    1.回调:某件事情发生时执行一个函数。
    2.按S显示帧速。
    3.fountain.osg再看。
    4.自定义回调
    继承NodeCallback
    重写operator();
    更新矩阵setMatrix(Matrix::translate);
    traverse(node,nv);贯穿
    5.定义矩阵节点MatrixTransform
    .setUpdateCallback(new MyCallBack);
    6.节点访问器,参看osgCallBack案例
    构造函数(::TRAVERSE_ALL_CHILDREN);
    apply(osg::Geode)
    geode.getNumDrawables();
    geom=dyn_cast(geode.getDrawable(i));
    geom.getVertexArray();
    vArr.insert(end,begin,end);
    遍历得到的结果可以放在类成员变量里。
  • 相关阅读:
    jQuery+ThinkPHP+Ajax实现即时消息提醒功能
    依赖注入(DI)
    控制反转(IoC)
    ajax以base64上传图片到django
    python 多进程、多线程、协程
    python3 实现tcp/udp局域网通信
    同源策略与跨域访问
    nginx+uwsgi阿里云ubuntu服务器上简单部署flask RESTful风格项目
    python3 实现 websocket server 解决中文乱码
    python IO 多路复用 epoll简单模型
  • 原文地址:https://www.cnblogs.com/greatverve/p/osg.html
Copyright © 2011-2022 走看看