OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
OGRE 3D 可视化器

详细说明

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

除了这里看到的 API 外,还有几个环境变量控制着 ovis 的行为。它们在 createWindow 中有说明。

加载几何体

您可以 即时 创建几何体,也可以通过加载 Ogre .mesh 文件来创建。

Blender

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

Assimp

当使用 Ogre 1.12.9 或更高版本时,启用 Assimp 插件可以加载任意几何体。只需在 WindowScene::createEntity 中将 bunny.obj 传递给 meshname 而不是 bunny.mesh

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

类  cv::ovis::WindowScene
 

枚举

enum  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
}
 
enum  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
}
 
enum  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)
 

枚举类型文档 (Enumeration Type Documentation)

◆ EntityProperty

#include <opencv2/ovis.hpp>

枚举值 (Enumerator)
ENTITY_MATERIAL 
ENTITY_SCALE 
ENTITY_AABB_WORLD 
ENTITY_ANIMBLEND_MODE 
ENTITY_CAST_SHADOWS 

◆ MaterialProperty

#include <opencv2/ovis.hpp>

枚举值 (Enumerator)
MATERIAL_POINT_SIZE 
MATERIAL_LINE_WIDTH 
MATERIAL_OPACITY 
MATERIAL_EMISSIVE 
MATERIAL_DIFFUSE 
MATERIAL_TEXTURE0 
MATERIAL_TEXTURE 
MATERIAL_TEXTURE1 
MATERIAL_TEXTURE2 
MATERIAL_TEXTURE3 

◆ SceneSettings

#include <opencv2/ovis.hpp>

枚举值 (Enumerator)
SCENE_SEPARATE 

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

SCENE_INTERACTIVE 

允许用户控制相机。

SCENE_SHOW_CS_CROSS 

绘制坐标系十字以供调试

SCENE_AA 

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

SCENE_OFFSCREEN 

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

SCENE_SHADOWS 

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

函数文档 (Function Documentation)

◆ addResourceLocation()

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

#include <opencv2/ovis.hpp>

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

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

参数
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 (大小)网格的范围
每边的段数

◆ createPlaneMesh()

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

#include <opencv2/ovis.hpp>

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

创建具有相同名称的材质

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

◆ createPointCloudMesh()

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

#include <opencv2/ovis.hpp>

创建一个点云网格

创建具有相同名称的材质

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

◆ createTriangleMesh()

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

#include <opencv2/ovis.hpp>

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

创建具有相同名称的材质

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

◆ createWindow()

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

#include <opencv2/ovis.hpp>

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

参数
标题窗口标题
size (大小)窗口大小
flags (标志)SceneSettings 的组合

此外,行为还受以下环境变量控制

  • OPENCV_OVIS_VERBOSE_LOG: 打印所有 OGRE 日志输出
  • OPENCV_OVIS_RENDERSYSTEM: 要使用的 OGRE RenderSystem 的名称
  • 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 图像 )

#include <opencv2/ovis.hpp>

已弃用
使用 setMaterialProperty

◆ waitKey()

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

#include <opencv2/ovis.hpp>

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

参数
延迟0 是特殊值,表示“永远”。任何正数都会在同步到空白(通常是 16 毫秒)后返回。
返回
按下键的代码,如果没有按下键则为 -1