Demo  |   文档  |   博客  |   支持库  |   论坛  |   关于  |   EN
  • 首页
  • 产品
  • 解决方案
  • 下载
  • 合作
  • TWAVER DOCUMENT CENTER
    • 开发文档 – TWaver Make
      • 产品概述
      • 模型的定义和加载
      • 扩展自定义模型库
      • 模型库目录
        • 3D模型目录
        • 2D模型目录
313 views. Last update: March 29, 2016
  1. TWAVER DOCUMENT CENTER
  2. 开发文档 – TWaver Make
  3. 扩展自定义模型库
Print

IN THIS PAGE

  • 1 完全自定义的模型
  • 2 扩展obj模型
  • 3 基于已有模型扩展
  • 4 基于twaver.combo模型扩展

http://doc.servasoft.com/twaver-document-center/twaver-make/about/#parametersmake是一个平台,除了拥有丰富的内置模型外,用户也可以扩展自己的模型库。

完全自定义的模型

利用自方法,用户可以完全更加自己的需求定制自己的模型,没有任何限制;缺点是无法利用已经有的模型库进行扩展;对于3D模型开发者,此种方法适用底层开发能力强的用户. 如下:

JavaScript
1
2
3
4
5
6
7
8
9
10
make.Default.register('myRack',function(){
    var rack = new mono.Cube(60,220,60);
    rack.s({
       'm.image':'../rack.png'
       'm.front.image' : '../front_rack.png',
    });
},{
  category : "机柜模型"
  type : "mono.Element",
});

扩展obj模型

TWaver Make里面支持obj模型,make包里面就提供了很多内置的obj模型,用户也可以扩展自己的obj模型,通过3d max或者其他3d模型的设计器设计自己的3d模型,然后导出obj格式的文件,obj模型一般包含obj,mtl和贴图资源文件。obj文件里面存放的是模型的各个点和面的数据信息,mtl文件中存放的是各种材质的描述。图片资源可有可无,取决于3d模型本身。

有了obj模型,就可以在make中注册一个自己的模型,首先我们需要把obj模型(包括obj,mtl和所有的图片文件)copy到项目的某个目录下,例如现在有一个hk的obj模型,copy到obj的目录下,注册到make的代码如下:

JavaScript
1
2
3
4
5
6
7
make.Default.registerObj('com.hk', 'hk', '../../obj/');
 
// 'com.hk': 模型的id,模型id是make中的唯一标识,自定义的模型不要和twaver内部的模型冲突,twaver内部的模型都是以twaver开头的
 
//'hk': 模型名称,也就是模型文件的名称(obj和mtl文件),obj和mtl文件名需要保持一致
 
//'../../obj/':模型的路径,模型的路径是相对于Make中的路径

需要注意的是模型的路径,’../../obj/’的路径是相对于make.Default.path的路径,因为这里path的路径为’./js/make’,而obj的目录是工程的根目录下,所有需要先回到上上级目录。

QQ20160329-0

注册obj的API为:make.Default.registerObj(id,name,path, parameters)。parameters是注册是传入的参数,比如name,icon,description,可以为null,关于parameters参数可以参考这里的介绍。

注册好了obj模型就可以通过load方法加载这个模型,代码如下:

JavaScript
1
2
3
make.Default.load('com.hk', function(object3d){
      databox.addByDescendant(object3d);
});

obj模型属于异步加载的模型,因此需要在load方法的callback中获取加载的obj模型对象。

基于已有模型扩展

利用此方法,用户可以在原有的模型的基础上,定制出自己常用的模型,如下代码,在原本的“twaver.idc.rack”的模型基础上,通过修改参数width,扩展出自己的模型,此种方法定义模型简单,不需要精通太多的底层技术,缺陷是局限于已有的模型库,不过随着make的模型库不断丰富,这种局限性会变得越来越小.

JavaScript
1
2
3
4
5
make.Default.register('myRack',function(json){
   json.id = 'twaver.idc.rack';
   json.width = 700;
   return make.Default.load(json);
});

基于twaver.combo模型扩展

利用此方法,用户可以在原来模型库的基础上,通过组合的方式,形成一个新的组合体(注意,只是针对3D模型),比如一个楼层模型,其实是用过外墙,内墙,门,窗等组成的,所以一个楼层就可以通过twaver.combo来定义,此方法的参数是一个数组,而数组第一个元素定义的对象将作为组合体的主对象:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
make.Default.register('room01',function(json){
    var jsonObject =[
    {
        "id": "twaver.idc.wall",
        "data": [
            20,
            20,
            6444,
            20,
            6444,
            4488,
            20,
            4488,
            20,
            20
        ]
    },
    {
        "id": "twaver.idc.floor",
        "data": [
            20,
            20,
            6444,
            20,
            6444,
            4488,
            20,
            4488,
            20,
            20
        ]
    },
    {
        "id": "twaver.idc.innerWall",
        "data": [
            616,
            1668,
            6086,
            1668,
            6086,
            2518,
            616,
            2518,
            616,
            1668
        ],
        "children": [
            {
                "id": "twaver.idc.door",
                "position": [
                    1117.9671397000086,
                    0,
                    1668
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    2430.809584499989,
                    0,
                    1668
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3359.5254803999796,
                    0,
                    1668
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    5370.024524499989,
                    0,
                    1668
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3031.0254803999796,
                    0,
                    2518
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3233.0254803999796,
                    0,
                    2518
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    5337.502449399978,
                    0,
                    2518
                ]
            }
        ]
    },
    {
        "id": "twaver.idc.innerWall",
        "data": [
            20,
            346,
            6444,
            346
        ],
        "children": [
            {
                "id": "twaver.idc.door",
                "position": [
                    135.33818239998072,
                    0,
                    346
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3038.4210748000073,
                    0,
                    346
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3225.6298859999984,
                    0,
                    346
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    6330.094649299979,
                    0,
                    346
                ]
            }
        ]
    },
    {
        "id": "twaver.idc.innerWall",
        "data": [
            20,
            1456,
            6444,
            1456
        ],
        "children": [
            {
                "id": "twaver.idc.door",
                "position": [
                    164.58301169998015,
                    0,
                    1456
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    2770.5900632999837,
                    0,
                    1456
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    3359.5254803999796,
                    0,
                    1456
                ]
            },
            {
                "id": "twaver.idc.door",
                "position": [
                    6294.529282099987,
                    100,
                    1456
                ]
            }
        ]
    },
    {
        "id": "twaver.idc.innerWall",
        "data": [
            3132.0254803999796,
            20,
            3132.0254803999796,
            1456
        ]
    }
];
var object3d = make.Default.load({id: "twaver.combo", data:jsonObject},);
return object3d;
});

 

313 views. Last update: March 29, 2016
Print