当前位置: 首页 > news >正文

blenderFds代码解读

文章目录

  • 一. 介绍
    • 1. FDS(Fire Dynamics Simulator)
    • 2. BlenderFDS
  • 二. 下载代码
  • 三. 开发环境配置
  • 四. 代码解读
    • 1. blender python特有语法
    • 2. 代码结构
      • 2.1 变量名解释
      • 2.2 bl文件夹
        • operators文件夹
        • ui
        • 其他文件
      • 2.2 lang文件夹
        • bf_scene
        • ON_GEOM
        • ON_MESH
        • ON_MOVE
        • ON_MULT
        • OP_PB
        • OP_XB
        • OP_XYZ
        • SN_DUMP
        • 其他
      • 2.3 types
      • 2.4 utils
      • 2.5 其他文件
        • config.py
        • __init__.py

一. 介绍

1. FDS(Fire Dynamics Simulator)

FDS 是一种火灾动力学模拟软件,主要用于模拟建筑物、隧道和其他空间中的火灾行为。由美国国家标准与技术研究院(NIST)开发,它采用计算流体力学(CFD)方法来模拟火灾的烟气扩散、温度分布、流体运动等现象。FDS 适用于火灾科学研究、建筑物防火设计、火灾安全分析等领域。

特点:

使用大涡模拟(LES)方法,精确模拟火焰、烟气流动和热量传递。
支持复杂的几何结构,可以模拟多种材料的燃烧行为。
与烟气可视化工具 Smokeview 集成,可以生成火灾的三维可视化效果。

2. BlenderFDS

BlenderFDS 是一个为 Blender 开发的插件,专门用于辅助 FDS 模型的创建和编辑。由于 FDS 本身没有友好的图形界面,建模复杂的几何结构比较困难。BlenderFDS 利用 Blender 的 3D 建模能力,让用户在 Blender 中创建和编辑 FDS 模型,然后将模型导出为 FDS 能够读取的文件格式。

特点:

提供简单的界面,将 Blender 的几何模型转换为 FDS 兼容的模型。
支持 FDS 中常用的火灾模拟属性设置,比如材料属性、热释放速率(HRR)、烟气排放等。
通过 Blender 的直观建模工具,可以快速创建复杂的建筑结构和空间。

二. 下载代码

blenderfds的github链接

三. 开发环境配置

常见的配置方法有
1.conda创建虚拟环境,blender改掉原本调用的python为虚拟环境
2.pycharm中使用blender的python, 还需要安装一些框架
3.将插件安装,然后pycharm打开插件所在位置,即可动态更改.

这里采用最简单的方式3,安装blenderfds插件后,可以打开下列路径,记得修改用户名.
C:\Users\用户名\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\blenderfds

这个方式暂时没有发现弊病, 其他方法后续再尝试. (后续:别的方法安装麻烦,但使用更好

四. 代码解读

1. blender python特有语法

c语言中定义变量和使用的方法是:

int my_int = 5;    // 整数变量,默认值为5
float my_float = 3.14;   // 浮点变量,默认值为3.14void function() {// 使用这些变量printf("Integer Value: %d\n", my_int);printf("Float Value: %.2f\n", my_float);
}

除了常规的python定义变量的方法, blender中,还有一种定义变量的方法

import bpy# 定义一个操作符类
class OBJECT_OT_custom_operator(bpy.types.Operator):bl_idname = "object.custom_operator"bl_label = "Custom Operator"# 定义自定义变量(属性)my_int: bpy.props.IntProperty(name="Integer Property",     # 属性名称description="An integer property",  # 描述default=5,                    # 默认值min=1,                        # 最小值max=100                       # 最大值)my_float: bpy.props.FloatProperty(name="Float Property",       # 属性名称description="A floating point property",  # 描述default=3.14                 # 默认值)def execute(self, context):# 使用自定义变量print(f"Integer Value: {self.my_int}")    # 输出整数值print(f"Float Value: {self.my_float}")    # 输出浮点值# 在Blender中,调整对象的位置(类比C语言中的操作)obj = context.active_object  # 获取当前活动对象obj.location.x += self.my_float  # 用浮点值来调整对象的位置return {'FINISHED'}  # 操作完成,返回

如何赋值这种变量呢,
赋值方法1: 通过ui界面
Blender中的 bpy.props.FloatProperty 属性通常是在操作符的UI面板中呈现的,用户可以通过界面交互来设置其值。

在你定义的操作符类中,my_float 作为属性,Blender会自动为其生成一个控件(通常是一个滑块或者文本框),并允许用户修改它。你只需要确保在 draw 方法中显示这个属性控件。

import bpyclass OBJECT_OT_custom_operator(bpy.types.Operator):bl_idname = "object.custom_operator"bl_label = "Custom Operator"# 定义自定义属性my_float: bpy.props.FloatProperty(name="Float Property",       # 属性名称description="A floating point property",  # 描述default=3.14                 # 默认值)def draw(self, context):layout = self.layoutlayout.prop(self, "my_float")  # 显示my_float控件,用户可以在UI中修改这个值def execute(self, context):print(f"Float Value: {self.my_float}")  # 输出my_float的当前值return {'FINISHED'}

执行操作符后,my_float 将显示在Blender的UI面板上(通常是一个浮动的面板)。你可以通过面板中的滑动条或输入框来设置其值。
当用户点击"确认"按钮时,my_float 的新值会被传递到 execute 方法中,进行后续的操作。

赋值方法2: 直接赋值

import bpyclass OBJECT_OT_custom_operator(bpy.types.Operator):bl_idname = "object.custom_operator"bl_label = "Custom Operator"my_float: bpy.props.FloatProperty(name="Float Property", description="A floating point property",  default=3.14  )def execute(self, context):# 直接给my_float赋值self.my_float = 5.67  # 将my_float的值设置为5.67print(f"New Float Value: {self.my_float}")  # 输出新值return {'FINISHED'}

2. 代码结构

在这里插入图片描述

2.1 变量名解释

这个是根据代码内容推测的,部分变量名中常出现的一些缩写

  • OT_bf : Operator_blenderfds

2.2 bl文件夹

operators文件夹
  1. check_geom.py 检查几何体封闭性(Check Sanity)和相交(Check Intersections)情况

  2. choose_namelist_id.py 用于在自由文本中选择 MATL_ID 和 PROP_ID 的操作符。

  3. clean_ma_slots.py 清理对象的材质槽,材质槽(Material Slots)是Blender中一个对象的属性,它决定了该对象可以使用多少个材质。每个材质槽可以关联一个材质(Material),用来为对象的不同部分(如面、边、顶点)设置不同的外观。材质槽允许你为一个对象的不同面或区域指定不同的材质,

  4. copy_params.py 用于在实体之间复制FDS参数值。

  5. gis.py 地理位置相关,对象的地理位置啥的

  6. load_bf_settings.py 加载默认BlenderFDS设置,删除当前数据!

  7. mesh_tools.py 设置mesh 设置建议的单元格大小, 自定义了很多参数涉及的数据类型

  8. run_external.py 加载默认命令,在终端中运行 FDS。估算 FDS 计算完成的预计时间。运行 Smokeview 显示 FDS 模拟结果。

  9. scene_export.py 将blender导出为fds文件

  10. scene_import.py 将fds导入当前/新场景

  11. show_fds_code.py 对话框类用于提示, 显示代码类, 从选中对象/集合/材质/场景 导出代码

  12. show_fds_geometry.py 这个没看懂
    “Show FDS Geometry” 操作符将会展示当前对象的FDS几何体。
    “Hide FDS Geometry” 操作符将会隐藏所有的临时FDS几何体。

  13. show_ui.py
    展示材料面板
    在这里插入图片描述
    SCENE_OT_bf_show_text: 在Blender的文本编辑器中显示文本

  14. update_addon.py 更新插件相关

ui
  1. init.py 注册simplify_ui
  2. simplify.py 实现了一个简化版的Blender界面。用户可以通过插件首选项控制是否启用简化UI。
其他文件
  1. init.py 注册bl文件夹内所有内容
  2. handlers.py 加载blender后, 文件保存前, 依赖图更新后处理.
  3. menus.py 菜单中添加导入导出fds文件
  4. panels.py ,面板ui, 图下两块
    在这里插入图片描述
  5. preferences.py 偏好设置中,对插件的设置界面,包括设置smv, fds运行的指令
  6. ui_lists.py 只是定义了一下右侧其他参数的那个像表格的ui

2.2 lang文件夹

除了一些公用属性和定义, 定义了每个命令的参数,导入,导出.

bf_scene
  1. bf_scene.py 扩展了 Blender Scene,为其添加了与 FDS(火灾动力学模拟器)相关的功能。
    ,添加了导入和导出 FDS 格式数据的功能,支持从 FDS 文件或字符串创建场景,或将场景数据转换为 FDS 格式。
  2. export_help.py 将 Blender 中的对象、集合、材质等数据转化为 FDS 所需的格式,支持完整导出和部分导出,并根据配置文件的设置处理输出顺序和内容。
  3. import_help.py 从 FDS 格式数据导入到 Blender 场景中,支持场景(Scene)、物体(Object)、材质(Material)等不同类型的 FDS namelists 导入。它根据 FDS 数据将相应的 Blender 元素创建或更新,并根据数据类型分别处理,支持管理和非管理 namelists 的导入,还包括了错误处理和进度显示。
ON_GEOM
  1. bingeom.py 读取和写入 FDS bingeom 文件的功能 没看懂
  2. geom_to_ob.py 将 FDS 数据中的几何体准确转换为 Blender 可用的 3D 对象,并确保其材质和几何属性正确映射。
  3. ob_to_geom.py 将Blender模型转换成FDS可以使用的格式
  4. ON_GEOM.py 从 FDS 参数列表中读取几何体相关的参数,并根据这些参数进行几何体的创建或转换。用于处理Blender对象的表面ID(SURF_ID)相关操作的类。它包括:
    get_value: 获取物体的表面ID值。
    set_value: 设置物体的表面ID,涉及材料槽的删除和重新赋值
ON_MESH
  1. align_meshes.py 对齐网格
  2. calc_meshes.py 于计算网格(Mesh)参数的函数,目的是为网格生成、细分和对齐等操作提供支持。
  3. split_mesh.py 这段代码实现了对网格(Mesh)的划分操作,主要包括根据给定的细分数(nsplits)对网格进行分割,并计算分割后的相关信息,如每个子网格的 ijk 尺寸、网格的边界框(xbs)、网格细胞大小(cs)、网格 ID(hids)等。
  4. ON_MESH.py 包含网格(MESH)相关参数和操作的系统,用于在 Blender 中处理计算流体动力学(CFD)模拟或其他物理仿真任务。具体地,它设置了不同的网格参数(如 IJK、nsplits、XB 等),并实现了这些参数的更新、显示和导出。
ON_MOVE
  1. t34.py 将FDS中的MOVE变换数据(包括平移、缩放、旋转等)转回Blender中使用的4x4矩阵格式,将Blender中的4x4矩阵转换为FDS中的T34格式(一个由9个元素组成的三行三列矩阵和一个3D平移向量)。
  2. ON_MOVE.py 用于处理几何变换(MOVE)。该类是一个Namlist(命名列表),它包含了多个几何变换参数,如平移、旋转、缩放等。
ON_MULT

MULT MultiplierParameters
用于生成多个网格的命令。它允许通过复制和位移现有网格来快速创建多个均匀排列的网格,而无需手动逐一定义每个网格。这对于大规模模拟尤其有用,例如在一个规则的几何区域中布置多个相同尺寸的网格。

  1. multiply.py 这段代码的核心是根据给定的多重变换规则,扩展生成多个新的 xb 坐标和 hid 标识符。
  2. ON_MULT.py 这个命令相关的一些操作,包括其ui界面
    在这里插入图片描述
OP_PB

PB是指PBX PBY PBZ这种指定平面的数据,例如PBX=1 表示x=1的平面, blender与fds中的定义不同,要相互转换.

  1. ob_to_pbs,py 用于将Blender中的物体几何信息转换为FDS(火灾动力学模拟)中的PB(Planes)表示法的一个模块。
  2. pbs_to_ob.py 将FDS PB格式的平面数据(例如 (“PBX”, x3))导入到Blender物体(ob)中,生成一个新的网格。
  3. OP_PB.py
    OP_PB 类
    功能:这是一个Blender操作类,主要用于处理PB格式的导出操作。它继承自 BFParam,并用于将Blender对象的几何数据导出为FDS的PB(Planes)格式。
    OP_PBX, OP_PBY, OP_PBZ 类
    功能:这些类分别用于导入FDS中的不同平面类型(PBX、PBY、PBZ)到Blender中,继承自 OP_PB,但只用于导入操作,不涉及导出。
OP_XB

xb是fds中的位置大小定义方式,XB: 定义网格的边界,网格是一个单一的直角平行六面体(长方体),遵循右手坐标系规则。网格的起点由六个实数(XB)中的第 1、3 和 5 个值定义,网格的对角点由第 2、4 和 6 个值定义。

  1. cakc_pixels.py Blender对象的像素化(Pixelization)算法,用于将Blender中的三维几何对象转换为一个二维的像素表示形式。
  2. calc_voxels.py 体素化, 将blender对象坐标转换为xb
  3. ob_to_xbs.py xbs_to_ob.py blender对象转换为符合fds格式的xb数据, 或者后者转换为前者.
  4. OP_XB.py 这段代码允许用户通过Blender界面设置对象的几何数据导出类型,可以选择边界框、体素、像素、面或边作为导出选项。在导出时,代码会将选择的几何数据转换为FDS支持的格式,用于火灾模拟。
OP_XYZ

XYZ: 节点的坐标。

  1. ob_to_xyzs.py xyzs_to_ob.py将Blender对象的几何数据转换为FDS(火灾动态模拟)使用的XYZ坐标数据格式。反之,后者转换为前者.
  2. OP_XYZ.py OP_XYZ这是一个Blender自定义操作(操作面板上的按钮/选项),用于导出Blender对象的XYZ点数据。to_fds_list 此方法将Blender对象的几何数据转换为FDS所需的格式. set_value
    此方法允许从FDS导出数据后将XYZ坐标应用回Blender对象:
SN_DUMP

DUMP命令用于控制FDS中不同类型数据的输出频率和方式,包括点设备、切片、粒子、等值面等数据的保存。通过配置参数,可以灵活指定输出的时间间隔和特定的输出时刻。
NFRAMES: 定义总输出帧数,默认值为1000。输出频率由(T_END - T_BEGIN)/ NFRAMES计算。
SMOKE3D:是否输出三维烟雾数据。

  1. sc_to_ge1.py 将Blender的几何数据导出为GE1文件格式,GE1是一种用于FDS(Fire Dynamics Simulator)模拟的几何文件格式。没看懂这个ge1
  2. SN_DUMP.py
    DUMP Namelist 类:SN_DUMP
    SN_DUMP 类代表了 FDS 中的 DUMP Namelist,它包含了与输出数据相关的各种参数,如:
    几何描述文件 (RENDER_FILE)
    状态文件 (STATUS_FILES)
    输出频率 (NFRAMES, DT_RESTART 等)
    bf_params 元组定义了所有可以添加到 DUMP Namelist 中的导出参数,它们在上述的类中已经定义。

scene_to_ge1 函数,将 Blender 场景的几何数据转换为 GE1 格式,然后保存为文件。

在这里插入图片描述

其他
  1. bf_collenction.py
    get_layer_collection 方法的使用:
    在 Blender 中,集合(Collection)被组织在多个 layer_collection 层中。通过 get_layer_collection 方法,能够定位与特定 Collection 对象相关联的层集合。
    to_fds_list 方法用于将 Collection 对象及其包含的所有对象转换为 FDS 格式的数据。它会遍历集合中的所有对象,并将它们按字母顺序进行排序。
  2. bf_material.py
    在这里插入图片描述
    update_MP_namelist_cls_items 函数:

该函数更新了 MP_namelist_cls 中可选项的列表。MP_namelist_cls 是一个枚举类型,定义了与 FDS 中的 namelist 相关的材质类别。它会根据 BFNamelist 中的子类更新可选项。
函数会从 BFNamelist 子类中收集材质类型(如 SURF),并更新 MP_namelist_cls 的 items。

  1. bf_object.py 关联到 FDS 数据模型并生成适当的 namelist。OP_is_tmp 和 OP_has_tmp 类分别管理对象是否为临时对象. OP_ID 类扩展了对象的标识符管理,在临时对象的情况下允许通过添加后缀来区分不同的对象实例。

  2. MN_SURF.py
    定义了一个 SURF(边界条件)名单类型,指定了与该名单相关的属性(如 ID、颜色、透明度等)以及导出控制逻辑。它通过继承 BFNamelistMa 类,并在其基础上扩展了导出和导入的行为。

  3. ON_DEVC.py
    ON_DEVC 类继承自 BFNamelistOb,并包含多个参数类,用于配置和控制设备(Device)的输出属性。

  4. ON_HOLE.py

  5. ON_INIT.py

  6. ON_OBST.py

  7. ON_other.py

  8. ON_PROF.py

  9. ON_SLCF.py

  10. ON_VENT.py

  11. ON_ZONE.py

  12. OP_SURF_ID.py

  13. SN_CATF.py

  14. SN_config.py

  15. SN_HEAD.py

  16. SN_MISC.py

  17. SN_MOVE.py

  18. SN_MULT.py

  19. SN_PERS.py

  20. SN_RADI.py

  21. SN_REAC.py

  22. SN_TIME.py

2.3 types

  1. bf_exception.py
    BFException 类具有灵活的异常信息生成机制,可以包含错误源和详细的描述,而 BFNotImported 类则专门用于处理与 FDS 导入相关的失败情况。
  2. bf_namelist.py
    BFNamelist 类:
    功能:这是一个抽象基类,表示 Blender 中与 FDS(火灾动态模拟器)Namelist 组的对应关系。它定义了如何管理 Blender 中的 FDS 参数,并通过各种方法与 FDS 配置进行交互。
  3. bf_param.py
    BFParam:
    这个类表示一个 Blender 参数,它对应于 FDS 的一个命令。
    BFParamOther:
    继承自 BFParam,用于处理自定义的 “其他” FDS 参数。
  4. fds_list.py
    FDSNamelist
    FDSList 的子类:表示FDS输入文件中的一个命名列表(Namelist),它是参数的集合。
    构造函数 (init):初始化时需要指定一个 fds_label(命名列表的名称),还可以提供 f90_params(F90格式的参数)、msgs(注释信息)等参数。

2.4 utils

  1. binpacking.py
    简单的装箱算法。
    该脚本实现了一个简单的第一适应装箱算法,其中物品被分配到固定数量的箱子中。每个物品都有一个重量,目标是将物品分配到箱子中,以最小化每个箱子的总重量。

  2. geometry.py
    对对象的操作: 获取,设置临时,移除, 变换, 获取边界框
    对材质的操作: 创建, 获取

  3. gis.py
    地理坐标系统(WGS84)与UTM(Universal Transverse Mercator)坐标系统之间的转换。

  4. io.py
    这段代码包含了多个用于处理文件路径和文件输入输出的实用函数,主要用于Blender与FDS(火灾模拟)文件之间的转换和文件操作。

  5. text.py
    这段代码提供了一个用于文本管理的实用函数,append_word。该函数主要用于将一个单词追加到文本行的末尾,同时确保文本不会超过最大长度MAXLEN。如果当前行的长度不足以容纳新的单词,它将自动换行并添加必要的缩进。

  6. ui.py

  • get_screen_area(context, area_type=“PROPERTIES”)
    该函数用于获取指定类型的Blender界面区域(如 “PROPERTIES” 面板)。如果该区域不存在,函数会尝试创建它。context: Blender的上下文对象,提供关于当前场景、对象等的相关信息。
    area_type: 要查找或创建的区域类型,默认为 “PROPERTIES”。

  • show_bl_text(context, bl_text=None, name=None)
    该函数将在Blender的文本编辑器中显示文本。context: Blender的上下文。
    bl_text: 要显示的文本对象。如果未给定,则创建一个新的文本对象。
    name: 可选的文本名称,如果没有提供,则使用默认名称。

  • write_bl_text(context, bl_text, header=None, texts=())
    该函数将文本写入Blender的文本编辑器。
    参数:
    context: Blender的上下文。
    bl_text: 要写入的文本对象。
    header: 可选的文本头部,添加到文本内容的前面。
    texts: 要添加的实际文本内容。

  • show_property_panel(context, space_context=“MATERIAL”)
    该函数用于显示或切换到Blender的属性面板(默认为材料面板)。

  • view_all(context)
    该函数执行视图操作 view3d.view_all,即在3D视图中适应所有对象。

  1. updater.py
    用于管理Blender插件更新的工具。

2.5 其他文件

config.py

配置信息,包括精度,是否开启自动设置,输出格式缩进,github更新设置等
比较重要的:

  1. FDS_COMMAND SMV_COMMAND TERM_COMMAND指定了在不同操作系统(Linux、Mac、Windows)上执行FDS和SMV命令的方式。
init.py

bl_info插件信息
日志
注册,注销 bl和lang

相关文章:

blenderFds代码解读

文章目录 一. 介绍1. FDS(Fire Dynamics Simulator)2. BlenderFDS 二. 下载代码三. 开发环境配置四. 代码解读1. blender python特有语法2. 代码结构2.1 变量名解释2.2 bl文件夹operators文件夹ui其他文件 2.2 lang文件夹bf_sceneON_GEOMON_MESHON_MOVEO…...

亚马逊评论爬虫+数据分析

爬取评论 做分析首先得有数据,数据是核心,而且要准确! 1、爬虫必要步骤,选好框架 2、开发所需数据 3、最后测试流程 这里我所选框架是seleniumrequest,很多人觉得selenium慢,确实不快,仅针对此…...

新手小白学习docker第六弹------Docker常规安装(安装tomcat、mysql、redis)

目录 1 总体步骤2 安装tomcat2.1 搜索镜像2.2 拉取镜像2.3 查看镜像2.4 启动镜像2.5 访问猫首页 3 安装mysql3.1 搜索镜像3.2 拉取镜像3.3 启动镜像 4 安装redis4.1 拉取镜像4.2 启动镜像(法1基础版)4.3 配置文件4.3.1 在宿主机下新建目录 /app/redis4.3…...

ReactPress与WordPress:两大开源发布平台的对比与选择

ReactPress与WordPress:两大开源发布平台的对比与选择 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。两款备受欢迎的开源发布平台——ReactPress和WordPress,各自拥有独特的优势和特点&am…...

机器情绪及抑郁症算法

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月12日17点02分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17230869054974 计算机来理解你的情绪&a…...

01-Ajax入门与axios使用、URL知识

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

第四十五章 Vue之Vuex模块化创建(module)

目录 一、引言 二、模块化拆分创建方式 三、模块化拆分完整代码 3.1. index.js 3.2. module1.js 3.3. module2.js 3.4. module3.js 3.5. main.js 3.6. App.vue 3.7. Son1.vue 3.8. Son2.vue 四、访问模块module的state ​五、访问模块中的getters ​六、mutati…...

[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)

文章目录 1、B站账号 主播认证2、开启直播3、直播设置添加素材、隐私设置指定窗口添加/删除 窗口 4、其它说明官方直播帮助中心直播工具教程 目前搜到的 macOS 直播教程都比较古早,大部分都使用 OBS,一番探索下来,发现目前已经不需要 OBS了&a…...

Netty实现WebSocket Client三种典型方式

一、简单版本 package com.ptc.ai.box.biz.relay.client;import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext;…...

软间隔支持向量机

软间隔支持向量机 ​ 我们先直接给出软间隔支持向量机的形式: P min ⁡ ω , b , ζ 1 2 ∥ ω ∥ 2 2 − C ∑ i 1 m ζ i s . t . y i ( ω x i b ) ≥ 1 − ζ i , i 1 , 2 , 3.. m ζ i ≥ 0 , i 1 , 2 , 3.. m P \min_{\omega,b,\zeta} \frac{1}{2}\Ve…...

在C++上实现反射用法

0. 简介 最近看很多端到端的工作,发现大多数都是基于mmdet3d来做的,而这个里面用的比较多的形式就是反射机制,这样其实可以比较好的通过类似plugin的形式完成模型模块的插入。当然我们这里不是来分析python的反射机制的。我们这篇文章主要来…...

【学术会议介绍,SPIE 出版】第四届计算机图形学、人工智能与数据处理国际学术会议 (ICCAID 2024,12月13-15日)

第四届计算机图形学、人工智能与数据处理国际学术会议 2024 4th International Conference on Computer Graphics, Artificial Intelligence and Data Processing (ICCAID 2024) 重要信息 大会官网:www.iccaid.net 大会时间:2024年12月13-15日 大会地…...

网络百问百答(一)

什么是链接? 链接是指两个设备之间的连接,它包括用于一个设备能够与另一个设备通信的电缆类型和协议。OSI参考模型的层次是什么? 有7个OSI层:物理层,数据链路层,网络层,传输层,会话层…...

【深圳大学】数据结构A+攻略(计软版)

1. 考试 1.1 形式 分为平时,笔试,机试三部分。其中: 平时占30%,包含平时OJ测验和课堂练习,注意这个可能会因老师的不同和课题组的新策略而改变。笔试占60%,是分值占比的主要部分。机试占10%。 1.2 题型…...

解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第4章 架构

推荐大佬做的讲解 可以帮助加深理解 ARM架构及汇编 Cortex-M3 和 Cortex-M4 处理器都是基于ARMv7-M架构 需要完成对编程模型、异常(如中断)如何处理、存储器映射、如何使用外设以及如何使用微控制器供应商提供的软件驱动库文件等 Cortex-M3和Cortex-M4处理器有两种操作状态…...

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀:Requests 库第一部分:背景介绍第二部分:Requests 库是什么?第三部分:如何安装 Requests 库?第四部分:Requests 库的基本函数使用方法第五部分&#xff1a…...

PostgreSQL 页损坏如何修复

PostgreSQL 错误:关系 base/46501/52712 中的块 480 存在无效的页。 当我们在使用 PostgreSQL 数据库的时候,如果服务器发生 CRASH 或者断电等异常情况的时候,有可能会遇到上面的这个报错信息。那么我们如何去修复这个数据呢,以及…...

Leetcode 75 Sort colors

题意:荷兰国旗问题,给一个数组[0,0,2,1,0],构造成[0,0,0,1,2]的形式,分成三块 https://leetcode.com/problems/sort-colors/description/ 题解: 在任意时刻,i 左边的数都是 0,k 右边的数都是 …...

如何进行数据库连接池的参数优化?

以下是进行数据库连接池参数优化的一些方法: 一、确定合适的初始连接数: 考虑因素:数据库的规模、应用程序的启动需求以及预期的初始负载。如果数据库规模较小且应用程序启动时对数据库的即时访问需求不高,可以将初始连接数设置…...

有了miniconda,再也不用担心python、nodejs、go的版本问题了

哈喽,大家好!我是「励志前端小黑哥」,我带着最新发布的文章又来了! 专注前端领域10年,专门分享那些没用的前端知识! 今天要分享的内容,是一个免费的环境管理工具,它叫Miniconda&…...

openresty入门教程:init_by_lua_block

init_by_lua_block 是 Nginx 配置中用于在 Nginx 启动时执行 Lua 脚本的一个指令。这个指令通常用于初始化全局变量、设置共享内存,或者执行一些需要在服务器启动时完成的准备工作。 以下是一个简单的 init_by_lua_block 使用示例: 1. 安装 Nginx 和 L…...

sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?

什么是Pump 扫链机器人,它的盈利逻辑优化策略是什么? Pump 扫链机器人,通过智能化、自动化的买卖操作帮助投资者实现快速盈利。在此基础上,我们对该机器人的盈利逻辑进行了深度优化,涵盖了买入策略和止盈策略的各个方面…...

Spring-boot 后端java配置接口返回jsp页面

Spring-boot 后端java配置接口返回jsp页面 spring boot 基于spring MVC的基础上进行了改进, 将Controller 与ResponseBody 进行了合并成一个新的注解 RestController。 当用户请求时,需要有视图渲染的,与请求数据的请求分别使用 1.在appli…...

LabVIEW车辆侧翻预警系统

在工业和实验室环境中,搬运车辆、叉车和特种作业车辆经常在负载和高速转弯过程中发生侧翻事故,导致设备损坏和人员伤害。为提高工作环境的安全性,开发了一种基于LabVIEW的工业车辆侧翻预警系统,能够实时监测车辆状态并发出预警&am…...

亲测有效:Maven3.8.1使用Tomcat8插件启动项目

我本地maven的settings.xml文件中的配置&#xff1a; <mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url> </mirror>…...

Find My电子体温计|苹果Find My技术与体温计结合,智能防丢,全球定位

电子体温计由温度传感器&#xff0c;液晶显示器&#xff0c;纽扣电池&#xff0c;专用集成电路及其他电子元器件组成。能快速准确地测量人体体温&#xff0c;与传统的水银玻璃体温计相比&#xff0c;具有读数方便&#xff0c;测量时间短&#xff0c;测量精度高&#xff0c;能记…...

jmeter常用配置元件介绍总结之后置处理器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之后置处理器 8.后置处理器8.1.CSS/JQuery提取器8.2.JSON JMESPath Extractor8.3.JSON提取器8.4.正则表达式提取器8.5.边界提取器8.5.Debug PostProcessor8.6.XPath2 Extractor8.7.XPath提取器8.8.结果状态处理器 8.后置处理…...

html5多媒体标签

文章目录 HTML5新增多媒体标签详解&#xff1a;视频标签与音频标签视频标签<video>音频标签<audio>代码案例 HTML5新增多媒体标签详解&#xff1a;视频标签与音频标签 HTML5引入了多项新特性&#xff0c;其中多媒体标签的引入为网页开发带来了革命性的变化。这些标…...

51c自动驾驶~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/11638131 #端到端任务 说起端到端&#xff0c;每个从业者可能都觉得会是下一代自动驾驶量产方案绕不开的点&#xff01;特斯拉率先吹响了方案更新的号角&#xff0c;无论是完全端到端&#xff0c;还是专注于planner的模型&a…...

JAVA学习日记(十五) 数据结构

一、数据结构概述 数据结构是计算机底层存储、组织数据的方式。 数据结构是指数据相互之间以什么方式排列在一起的。 数据结构是为了更加方便的管理和使用数据&#xff0c;需要结合具体的业务场景来进行选择。 二、常见的数据结构 &#xff08;一&#xff09;栈 特点&…...