@[TOC](ht for web(图扑)加载模型)
代码加注释
ht.Default.loadObj('model/demo.obj', 'model/demo.mtl', {
cube: true,
center: true,
prefix: 'model/',//贴图素材位置
reverseFlipMtls:"*",//反面贴图和正面一样
shape3d: "demo",//模型名称
finishFunc: function (modelMap, array, rawS3) {
window.rawS3 = rawS3;
if (modelMap) {
var demo01= modelMap["demo01"];//根据材质球细分模型
var demo02= modelMap["demo02"];
//模型第一部分
ht.Default.setShape3dModel("demo01", demo01);
var node1 = new ht.Node();
node1.setTag("demo01");//设置节点标签
node1.s({
'shape3d': "demo01",
'wf.visible': 'selected',//选中线框显示
'shape3d.transparent': true,//是否透明
'shape3d.opacity': 1,//透明系数
'wf.geometry': false,//是否显示线框
'wf.combineTriangle': 3,//线框类型1,2,3 'wf.color': "#ffffff",//更改线框颜色
"2d.selectable": false,//2d是否可选
"3d.selectable": false,//3d是否可选
"2d.editable": false,//2d是否可编辑
"3d.editable": false,//3d是否可编辑
"2d.movable": false,//3d是否可移动
"3d.movable": true,//3d是否可移动
"shape3d.blend": "#ffffff",//贴图颜色
"shape3d.alwaysOnTop": true,//是否总在前面
});
node1.s3(rawS3[0]/15, rawS3[1]/15, rawS3[2]/15);//模型大小
node1.r3(0, 0, Math.PI);//旋转角度
node1.p3(-120, 1, 300);//位置
dataModel.add(node1);//将模型添加到3d场景中
//模型第二部分
ht.Default.setShape3dModel("demo02", demo02);
var node2 = new ht.Node();
node2.setTag("demo02");
node2.s({
'shape3d': "demo02",
'wf.visible': 'selected',
'shape3d.transparent': true,
'shape3d.opacity': 1,
'wf.geometry': false,
'wf.combineTriangle': 3,
"2d.selectable": false,
"3d.selectable": false,
"2d.editable": false,
"3d.editable": false,
"2d.movable": false,
"3d.movable": true
});
node2.a({
'jt.status': false
});
node2.s3(rawS3[0]/15, rawS3[1]/15, rawS3[2]/15);
node2.r3(0, 0, Math.PI);
node2.p3(-120, 1, 300);//位置
dataModel.add(node2);
}
}
});
加载标签
function initCameraBillBorad(tag,img){
var node = new ht.Node();
node.s({
'shape3d': 'billboard',
'shape3d.image': img,
'texture.cache': true, // 是否缓存
'autorotate': true, // 始终面向相机
'alwaysOnTop': false, ---- 是否需要一直在上方
'vector.dynamic': true, // 是否动态改变贴图的大小以保证清晰
'fixSizeOnScreen': true, // 无论缩放,保持 image / 矢量 原始大小,注意需要始终面向相机前提
"interactive": true,
"2d.movable": false,
"3d.movable": false,
"onClick":function(event,data){
}
});
node.setTag(tag)
dataModel.add(node);
return node
}