Skip to content

Latest commit

 

History

History
164 lines (124 loc) · 4.01 KB

README_zh-cn.md

File metadata and controls

164 lines (124 loc) · 4.01 KB

通用体素模型

English| 简体中文

互为异性的通用算法设计涵盖任意体素模型的存储和生成方案,用于传统体素模型和虚拟世界的世界布局数据结构。

这里对体素模型的定义指两种事物,一方面是字面意思的体素模型,另一方面是虚拟世界的世界布局数据结构。

不同单位体素对象的模型不一定就是正方体,也可以是由传统三角形面构成的模型。

🎯目标

当前主要开发任务是在传统体素模型方面:

  1. 致力于实现推广为通用体素模型文件格式,兼容任何建模软件和游戏开发,例如3dmax、blender、虚幻引擎、Minecraft结构等。

  2. 不同算法模型之间能够相互转化或同时使用。

🎨设计

下面我使用具体的例子展示目前已设计算法的工作逻辑。

six_vector_model

矩阵同构模型

graph LR
A["头部声明矩阵中不同数值对应的单位体素对象"] --> B["设立结构参考系"] --> C["沿立体竖轴逐层解析平截面体素布局为矩阵"] 
Loading
  1. 头部声明矩阵中不同数值对应的单位体素对象

    0 = NULL \\NULL占有,不可声明,代表矩阵对应位置无体素
    1 = red
    2 = purple
    3 = bule
    4 = cyan
    5 = green
    
  2. 设立结构参考系

    x - z - y \\以x轴为平面横轴,以y轴为平面竖轴,以z轴为立体竖轴
    
  3. 沿立体竖轴逐层解析平截面体素布局为矩阵

    1 = [0 0 0;
         0 2 0;
         0 0 0]
    2 = [0 1 0;
    	 1 3 3;
    	 0 4 0]
    3 = [0 0 0;
    	 0 5 0;
    	 0 0 0]
    

优势在于易体素模型的立体变换。

对象坐标模型

graph LR
A["头部声明单位体素对象"] --> B["设立坐标参考系"] --> C["按声明的单位体素对象顺序逐个解析其坐标位置集"] 
Loading
{
    "objects":{
        "red":red, \\用json的格式表达数据结构,但并非是json,这里不带引号的red是对象而不是字符串
		"purple":purple,
        "bule":bule,
        "cyan":cyan,
        "green":green
    },
    "":["x", "z", "y"], \\设立坐标参考系,位于极角。以x轴为平面横轴,以y轴为平面竖轴,以z轴为立体竖轴,原点坐标为(1, 1, 1)。0被占用,用于废除坐标点。可以使用更加精进的算法在对于坐标的解析和存储处理上趋向极限追求更快的速度
        "red":[[1,2,1],[2,2,3]],
        "purple":[[2,1,2]],
        "bule":[[2,2,2],[3,2,2]],
        "cyan":[[2,2,1]],
        "green":[2,3,2]
    }
}

优势在于数据量极大结构的直观查询。

树状生长模型

graph LR
A["头部声明树脉中不同数值对应的单位体素对象"] --> B["设立方向参考系"] --> C["从树芯开始往各个方向同时分支生长"]
Loading
  1. 头部声明树脉中不同数值对应的单位体素对象

    0 = NULL \\NULL被占用,不可声明,代表无单位体素对象的支条
    1 = red
    2 = purple
    3 = bule
    4 = cyan
    5 = green
    
  2. 设立方向参考系

     x - z - y \\以x轴为前后正方向,以y轴为左右正方向,以z轴为上下正方向
    
  3. 从树芯开始往各个方向同时分支生长

    符号 意义
    F 向前
    B 向后
    L 向左
    R 向右
    A 向上
    U 向下

    生长情况一

    tree_growth_model_timing_diagram_1

    {
        5:{
            F:3
            B:1
            L:1
            R:4
            A:5
            U:2
        }
    }
    

    生长情况二

    tree_growth_model_timing_diagram_2

    {
    	1:{
    		F:5:{
    			 F:3
            	 L:1
            	 R:4
            	 A:5
            	 U:2
    		}
    	}
    }
    

    优势在于生成时多线程分支并发进行。