OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
未找到匹配项
OGRE 3D 可视化工具

详细描述

ovis 是一个围绕 ogre3d 的简化渲染包装器。API 中使用了 Ogre 术语,并假定使用 Ogre 脚本 进行高级自定义。

除了此处看到的 API 外,还有几个环境变量可以控制 ovis 的行为。这些变量在 createWindow 中有文档说明。

加载几何体

您可以 动态创建 几何体或通过加载 Ogre .mesh 文件来创建。

Blender

建议使用 Blender 来转换/创建几何体。

Assimp

当使用 Ogre 1.12.9 或更高版本时,启用 Assimp 插件允许加载任意几何体。只需在 WindowScene::createEntity 中将 bunny.mesh 替换为 bunny.obj 作为 meshname

您仍然应该使用 ogre-meshviewer 来验证几何体是否正确转换。

类  cv::ovis::WindowScene
 

枚举

枚举  cv::ovis::EntityProperty {
  cv::ovis::ENTITY_MATERIAL ,
  cv::ovis::ENTITY_SCALE ,
  cv::ovis::ENTITY_AABB_WORLD ,
  cv::ovis::ENTITY_ANIMBLEND_MODE ,
  cv::ovis::ENTITY_CAST_SHADOWS
}
 
枚举  cv::ovis::MaterialProperty {
  cv::ovis::MATERIAL_POINT_SIZE ,
  cv::ovis::MATERIAL_LINE_WIDTH ,
  cv::ovis::MATERIAL_OPACITY ,
  cv::ovis::MATERIAL_EMISSIVE ,
  cv::ovis::MATERIAL_DIFFUSE ,
  cv::ovis::MATERIAL_TEXTURE0 ,
  cv::ovis::MATERIAL_TEXTURE = MATERIAL_TEXTURE0 ,
  cv::ovis::MATERIAL_TEXTURE1 ,
  cv::ovis::MATERIAL_TEXTURE2 ,
  cv::ovis::MATERIAL_TEXTURE3
}
 
枚举  cv::ovis::SceneSettings {
  cv::ovis::SCENE_SEPARATE = 1 ,
  cv::ovis::SCENE_INTERACTIVE = 2 ,
  cv::ovis::SCENE_SHOW_CS_CROSS = 4 ,
  cv::ovis::SCENE_AA = 8 ,
  cv::ovis::SCENE_OFFSCREEN = 16 ,
  cv::ovis::SCENE_SHADOWS = 32
}
 

函数

void cv::ovis::addResourceLocation (const String &path)
 
void cv::ovis::createGridMesh (const String &name, const Size2f &size, const Size &segments=Size(1, 1))
 
void cv::ovis::createPlaneMesh (const String &name, const Size2f &size, InputArray image=noArray())
 
void cv::ovis::createPointCloudMesh (const String &name, InputArray vertices, InputArray colors=noArray())
 
void cv::ovis::createTriangleMesh (const String &name, InputArray vertices, InputArray normals=noArray(), InputArray indices=noArray())
 
Ptr< WindowScenecv::ovis::createWindow (const String &title, const Size &size, int flags=SCENE_INTERACTIVE|SCENE_AA)
 
void cv::ovis::setMaterialProperty (const String &name, const String &prop, const Scalar &value)
 
void cv::ovis::setMaterialProperty (const String &name, int prop, const Scalar &value)
 
void cv::ovis::setMaterialProperty (const String &name, int prop, const String &value)
 这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。
 
void cv::ovis::setMaterialProperty (const String &name, int prop, InputArray value)
 
void cv::ovis::updateTexture (const String &name, InputArray image)
 
int cv::ovis::waitKey (int delay=0)
 

枚举类型文档

◆ EntityProperty

#include <opencv2/ovis.hpp>

枚举器
ENTITY_MATERIAL 
ENTITY_SCALE 
ENTITY_AABB_WORLD 
ENTITY_ANIMBLEND_MODE 
ENTITY_CAST_SHADOWS 

◆ MaterialProperty

#include <opencv2/ovis.hpp>

枚举器
MATERIAL_POINT_SIZE 
MATERIAL_LINE_WIDTH 
MATERIAL_OPACITY 
MATERIAL_EMISSIVE 
MATERIAL_DIFFUSE 
MATERIAL_TEXTURE0 
材质纹理
材质纹理1
材质纹理2
材质纹理3

◆ 场景设置

#include <opencv2/ovis.hpp>

枚举器
SCENE_SEPARATE

窗口将使用单独的场景。否则,场景将被共享。

SCENE_INTERACTIVE

允许用户控制摄像机。

SCENE_SHOW_CS_CROSS

绘制坐标系十字架用于调试

SCENE_AA

应用抗锯齿。第一个窗口决定所有窗口的设置。

SCENE_OFFSCREEN

离屏渲染,无需窗口。允许单独的抗锯齿设置。需要通过 WindowScene::update 手动更新。

SCENE_SHADOWS

启用场景中的实时阴影。默认情况下,所有实体都会投射阴影。通过 ENTITY_CAST_SHADOWS 控制。

函数文档

◆ addResourceLocation()

void cv::ovis::addResourceLocation ( const String & path)

#include <opencv2/ovis.hpp>

添加一个额外的资源位置,用于搜索网格、纹理和材质

必须在第一个 createWindow 调用之前调用。如果给定的路径不存在,则会在 Ogre Media 目录中重试。

参数
path文件夹或 Zip 压缩包。

◆ createGridMesh()

void cv::ovis::createGridMesh ( const String & name,
const Size2f & size,
const Size & segments = Size(1, 1) )

#include <opencv2/ovis.hpp>

创建网格

创建具有相同名称的材质

参数
name网格名称
size网格范围
segments每边的段数

◆ createPlaneMesh()

void cv::ovis::createPlaneMesh ( const String & name,
const Size2f & size,
InputArray image = noArray() )

#include <opencv2/ovis.hpp>

创建一个二维平面,X 向右,Y 向下,Z 向上

创建具有相同名称的材质

参数
name网格名称
size世界单位中的大小
image可选纹理

◆ createPointCloudMesh()

void cv::ovis::createPointCloudMesh ( const String & name,
InputArray vertices,
InputArray colors = noArray() )

#include <opencv2/ovis.hpp>

创建一个点云网格

创建具有相同名称的材质

参数
name网格名称
vertices浮点型位置向量
colors无符号字符型颜色向量

◆ createTriangleMesh()

void cv::ovis::createTriangleMesh ( const String & name,
InputArray vertices,
InputArray normals = noArray(),
InputArray indices = noArray() )

#include <opencv2/ovis.hpp>

根据顶点-顶点或面-顶点表示创建三角形网格

创建具有相同名称的材质

参数
name网格名称
vertices浮点型位置向量
normals浮点型法向量
indices整型索引向量

◆ createWindow()

Ptr< WindowScene > cv::ovis::createWindow ( const String & title,
const Size & size,
int flags = SCENE_INTERACTIVE|SCENE_AA )

#include <opencv2/ovis.hpp>

创建一个新的渲染窗口/视口

参数
title窗口标题
size窗口大小
flagsSceneSettings 的组合

此外,行为由以下环境变量控制:

  • OPENCV_OVIS_VERBOSE_LOG:打印所有 OGRE 日志输出
  • OPENCV_OVIS_RENDERSYSTEM:要使用的 OGRE 渲染系统的名称
  • OPENCV_OVIS_NOVSYNC:禁用所有窗口的 VSYNC

◆ setMaterialProperty() [1/4]

void cv::ovis::setMaterialProperty ( const String & name,
const String & prop,
const Scalar & value )

#include <opencv2/ovis.hpp>

将材质的着色器属性设置为给定值

参数
name材质名称
prop属性名称
value

◆ setMaterialProperty() [2/4]

void cv::ovis::setMaterialProperty ( const String & name,
int prop,
const Scalar & value )

#include <opencv2/ovis.hpp>

将材质的属性设置为给定值

参数
name材质名称
propMaterialProperty
value

◆ setMaterialProperty() [3/4]

void cv::ovis::setMaterialProperty ( const String & name,
int prop,
const String & value )

#include <opencv2/ovis.hpp>

这是一个重载的成员函数,为了方便提供。它与上面的函数的区别仅仅在于它接受的参数。

◆ setMaterialProperty() [4/4]

void cv::ovis::setMaterialProperty ( const String & name,
int prop,
InputArray value )

#include <opencv2/ovis.hpp>

将材质的纹理设置为给定值

参数
name材质名称
propMaterialProperty
value纹理数据

◆ updateTexture()

void cv::ovis::updateTexture ( const String & name,
InputArray image )

#include <opencv2/ovis.hpp>

已弃用
使用 setMaterialProperty

◆ waitKey()

int cv::ovis::waitKey ( int delay = 0)

#include <opencv2/ovis.hpp>

更新所有窗口并等待键盘事件

参数
delay0 是一个特殊值,表示“无限期”。任何正数在同步到空白后返回(通常为 16 毫秒)。
返回值
按下键的代码,如果未按下任何键则返回 -1