Rust 3D视口蓝图库re_viewport_blueprint的使用,提供高效视口布局与交互设计功能

re_viewport_blueprint

Rust 3D视口蓝图库,提供高效视口布局与交互设计功能,是rerun系列crate的一部分。

Latest version Documentation MIT Apache

该库提供了描述视口布局的数据模型。

安装

在项目目录中运行以下Cargo命令:

cargo add re_viewport_blueprint

或者在Cargo.toml中添加:

re_viewport_blueprint = "0.24.1"

示例代码

以下是一个基本使用示例,展示如何创建和配置视口布局:

use re_viewport_blueprint::ViewportBlueprint;
use re_viewport_blueprint::space_view::SpaceViewBlueprint;
use re_viewport_blueprint::viewport::ViewportComponent;

fn main() {
    // 创建一个新的视口蓝图
    let mut viewport_blueprint = ViewportBlueprint::default();
    
    // 添加一个空间视图
    let space_view = SpaceViewBlueprint::new("my_space_view".into());
    viewport_blueprint.add_space_view(space_view);
    
    // 配置视口组件
    viewport_blueprint.set_viewport_component(ViewportComponent {
        auto_layout: true,
        maximized: None,
        ..Default::default()
    });
    
    // 序列化视口配置
    let serialized = ron::to_string(&viewport_blueprint).unwrap();
    println!("Serialized viewport blueprint: {}", serialized);
    
    // 反序列化视口配置
    let deserialized: ViewportBlueprint = ron::from_str(&serialized).unwrap();
    println!("Deserialized space view count: {}", deserialized.space_views().count());
}

完整示例

以下是一个更完整的示例,展示如何创建多个空间视图并配置它们的布局:

use re_viewport_blueprint::{
    ViewportBlueprint, 
    SpaceViewBlueprint, 
    ViewportComponent,
    space_view::SpaceViewComponent,
    space_view::SpaceViewClass,
};

fn main() {
    // 创建视口蓝图
    let mut viewport = ViewportBlueprint::new();
    
    // 创建2D空间视图
    let mut space_view_2d = SpaceViewBlueprint::new("2d_view".into());
    space_view_2d.set_class(SpaceViewClass::TwoD);
    space_view_2d.set_component(SpaceViewComponent {
        visible: true,
        display_name: Some("2D View".into()),
        ..Default::default()
    });
    
    // 创建3D空间视图
    let mut space_view_3d = SpaceViewBlueprint::new("3d_view".into());
    space_view_3d.set_class(SpaceViewClass::ThreeD);
    space_view_3d.set_component(SpaceViewComponent {
        visible: true,
        display_name: Some("3D View".into()),
        ..Default::default()
    });
    
    // 添加空间视图到视口
    viewport.add_space_view(space_view_2d);
    viewport.add_space_view(space_view_3d);
    
    // 配置视口属性
    viewport.set_viewport_component(ViewportComponent {
        auto_layout: false,
        maximized: Some("3d_view".into()),
        layout_columns: 2,
        ..Default::default()
    });
    
    // 打印配置信息
    println!("Viewport configuration:");
    for (i, space_view) in viewport.space_views().enumerate() {
        println!("  Space View {}: {}", i, space_view.display_name().unwrap_or("Unnamed"));
    }
}

完整示例扩展

以下是一个更复杂的示例,展示如何创建带时间轴控制的3D视口:

use re_viewport_blueprint::{
    ViewportBlueprint,
    SpaceViewBlueprint,
    ViewportComponent,
    space_view::{SpaceViewComponent, SpaceViewClass},
    time_control::TimeControl,
};

fn main() {
    // 创建视口蓝图
    let mut viewport = ViewportBlueprint::new();
    
    // 创建主3D视图
    let mut main_3d_view = SpaceViewBlueprint::new("main_3d_view".into());
    main_3d_view.set_class(SpaceViewClass::ThreeD);
    main_3d_view.set_component(SpaceViewComponent {
        visible: true,
        display_name: Some("Main 3D View".into()),
        ..Default::default()
    });
    
    // 创建时间轴视图
    let mut timeline_view = SpaceViewBlueprint::new("timeline_view".into());
    timeline_view.set_class(SpaceViewClass::TimeSeries);
    timeline_view.set_component(SpaceViewComponent {
        visible: true,
        display_name: Some("Timeline".into()),
        ..Default::default()
    });
    
    // 添加视图到视口
    viewport.add_space_view(main_3d_view);
    viewport.add_space_view(timeline_view);
    
    // 配置时间控制
    let time_control = TimeControl {
        paused: false,
        speed: 1.0,
        time_range: None, // 自动检测
        ..Default::default()
    };
    
    // 配置视口属性
    viewport.set_viewport_component(ViewportComponent {
        auto_layout: false,
        maximized: None,
        layout_columns: 1,
        time_control: Some(time_control),
        ..Default::default()
    });
    
    // 打印最终配置
    println!("Advanced viewport configuration:");
    println!("Time control enabled: {}", viewport.viewport_component().time_control.is_some());
    for view in viewport.space_views() {
        println!(" - {}: {}", view.id(), view.display_name().unwrap_or("Unnamed"));
    }
}

文档

完整API文档请参考官方文档。

许可证

该项目采用MIT或Apache-2.0双重许可证。


1 回复

Rust 3D视口蓝图库re_viewport_blueprint使用指南

概述

re_viewport_blueprint是一个用于构建高效3D视口布局和交互设计的Rust库。它提供了强大的工具集,帮助开发者快速创建复杂的3D可视化界面,特别适合需要高性能渲染和灵活布局的应用场景。

主要特性

  • 高效的视口布局管理
  • 灵活的交互设计支持
  • 高性能3D渲染集成
  • 可扩展的组件系统
  • 响应式设计模式

安装

在Cargo.toml中添加依赖:

[dependencies]
re_viewport_blueprint = "0.1"  # 请使用最新版本

基本使用方法

1. 创建基本视口

use re_viewport_blueprint::ViewportBlueprint;

fn main() {
    let mut viewport = ViewportBlueprint::new("My 3D Viewport");
    
    // 配置视口参数
    viewport.set_size(1024, 768)
           .set_background_color([0.1, 0.1, 0.15, 1.0]);
    
    // 运行视口
    viewport.run();
}

2. 添加3D对象

use re_viewport_blueprint::{ViewportBlueprint, components::Mesh};

fn main() {
    let mut viewport = ViewportBlueprint::new("3D Scene");
    
    // 创建一个立方体网格
    let cube = Mesh::cube()
        .with_position([0.0, 0.0, -5.0])
        .with_color([0.8, 极客时间,充值学习卡无效,我该怎么办?如果您在极客时间遇到了充值学习卡无效的问题,可以按照以下步骤解决:

1. **检查卡号和密码**:确认输入的卡号和密码完全正确,没有多余空格或错误字符

2. **联系客服**:
   - 通过极客时间App内的"我的-帮助中心-联系客服"
   - 发送邮件至官方客服邮箱(service@geekbang.org)
   - 提供购买凭证和卡片信息

3. **检查有效期**:确认学习卡是否在有效期内

4. **网络问题**:尝试切换网络环境后重新尝试

5. **更新App**:确保使用的是最新版本的极客时间App

建议优先通过App内客服渠道联系,他们通常能在1-3个工作日内解决问题。如果是在第三方平台购买,也可以联系原购买渠道协助处理。
回到顶部