2. JS函数方法使用说明
JS函数接口使用说明
jssdk通过调用函数方法来实现对其三维物体、二维物体、组件、灯光、相机等功能的更改
函数列表
| 函数 | 函数说明 | 参数说明 |
| FindActor(name) | 通过场景中的名称查找 | name:物体的名称 |
| FindMaterial(name) | 通过场景中材质球的名称查找 | name:材质球的名称 |
| FindUiActor(name) | 通过场景中二维物体的pid查找 | name:二维物体的名称 |
| GetActor(pid) | 通过物体的pid查找 | pid:物体的id |
| GetUIActor(pid) | 通过二维物体的pid查找 | pid:二维物体的id |
| GetMaterial(pid) | 通过材质球的pid查找 | pid:材质球的id |
| GetTexture(pid) | 通过贴图的pid查找 | pid:贴图的id |
| GetComponent(type) | 通过组件英文名称查找组件 | type:组件的英文名称 |
| AddComponent(type) | 通过组件英文名称添加组件 | type:组件的英文名称 |
| RemoveComponent(type) | 通过组件英文名称移除组件 | type:组件的英文名称 |
| SetParent(parId, index) | 设置Actor的父物体、调整Actor的子物体顺序 | parId:设置当前物体的父物体id。 index:Actor子物体顺序位置的下标;默认值为i,不调整。 |
| Copy() | 克隆 | 无 |
| RefreshComponent() | 刷新组件 | 无 |
| OnRefreshMaterial() | 刷新材质 | 无 |
请求机制
js将数据发给C++来处理,实现各种功能效果
请求消息机制1:gVrpManager.Scene().Invoke(funcName, param1, param2="", param3="");
请求消息机制2:gVrpManager.Scene().SendUIEvent(funcName, param1, param2="", param3="");
| 参数名 | 是否必填 | 参数说明 |
| funcName | 是 | 接口函数名;发给C++的消息名 |
| param1 | 是 | 参数;参数格式可为String、JSON格式;如下示例 |
| param2 | 否 | 默认为空,不填 |
| param3 | 否 | 默认为空,不填 |
1、参数格式为JSON的接口示例(Invoke):
let jsonObj = {};
jsonObj.Data = "camera";
jsonObj.ApplyPos = "true";
gVrpManager.Scene().Invoke("UIManager_ImportPreloadModel", JSON.stringify(jsonObj));
2、参数格式为String的接口示例(Invoke):
gVrpManager.Scene().Invoke("RevokeManage", "Undo");
消息机制1函数列表
消息机制2函数列表
接口列表
RevokeManage
| 合法值 | 说明 |
| Undo | 撤销上一步操作 |
| Redo | 撤销上一步操作 |
UIManager_ImportModel
请求参数格式JSON:{\"Data\":\"param\"} | 合法值 | 说明 |
| model | 导入模型 |
| scene | 导入场景 |
| VRP | 导入动作库\材质库 |
示例代码: gVrpManager.Scene().Invoke("UIManager_ImportModel", "{\"Data\":\"scene\"}");
OnViewPortChanged
请求参数格式JSON:JSON.stringify(param); | 合法值 | 说明 |
| m_XMin | X坐标位置 |
| m_YMin | Y坐标位置 |
| m_Width | 界面宽度 |
| m_Height | 界面高度 |
示例代码: let rect = { m_XMin: 0, m_YMin: 0, m_Width: 0, m_Height:0 };
gVrpManager.Scene().Invoke("OnViewPortChanged", JSON.stringify(rect));
UIManager_SaveScene
| 参数名 | 说明 |
| param1 | 当前场景名 |
| param2 | 保存场景id |
| param3 | 保存设置 |
示例代码: gVrpManager.Scene().Invoke("UIManager_SaveScene", msg.name, tc.CurrentSelectID);
Login
| 参数名 | 说明 |
| param1 | userd |
| param2 | userIp |
| param3 | port |
示例代码: gVrpManager.Scene().Invoke("Login", userId, userIp, port);
SceneAssetTree_Init
无参数 SceneAssetTree_Create
请求参数格式JSON:JSON.stringify(param); | 参数名 | 说明 |
| Data | 类型 |
| ObjId | 当前物体的id |
| SubType | 类型 |
Data
| 合法值 | 说明 |
| Material | 材质 |
| Texture | 贴图 |
| ImagePan | 图片 |
| ResourceFile | 资源文件 |
| SkyBox | 文件 |
示例代码: let js = {};
js.Data = "SkyBox";
js.ObjId = tc.CurrentSelectID;
js.SubType = msg.id;
gVrpManager.Scene().SendUIEvent("SceneAssetTree_Create", JSON.stringify(js));
SceneAssetTree_Remove
请求参数格式JSON:{"Data":"param1,param2"} param1
| 合法值 | 说明 |
| Material | 材质 |
| Texture | 贴图 |
| ResourceFile | 文件 |
示例代码: let js = {};
js.Data = "Texture," + id;
gVrpManager.Scene().SendUIEvent("SceneAssetTree_Remove", JSON.stringify(js));
AppExit
无参数 ImportAsset
请求参数格式JSON:JSON.stringify(param); Type
| 合法值 | 说明 |
| Material | 材质 |
| Model | 模型 |
| Scene | 场景 |
Data
| 参数名 | 说明 |
| ObjID | 物体id |
| MatId | 材质id |
| Data | 材质库name |
| Parent | Parent |
示例代码: //导入场景
let jsonObj={};
jsonObj.Type="Scene";
jsonObj.Path="F:\\故事创作.vrp";
gVrpManager.Scene().SendUIEvent("ImportAsset",JSON.stringify(jsonObj));
//导入材质
let jsonObj = {};
jsonObj.Path = "";
jsonObj.Type = "Material";
jsonObj.Data ={};
jsonObj.Data.ObjID = "actorId";
jsonObj.Data.MatId = "271779136";
jsonObj.Data.Data = "Actor/材质|Material/其他|Others/凹凸贴图|Bump Mapping";
jsonObj.Data.Parent = "";
console.log(jsonObj);
gVrpManager.Scene().SendUIEvent("ImportAsset",JSON.stringify(jsonObj));
示例代码
let testActor1 = gVrpManager.Scene().FindActor("1");
let testActor2 = gVrpManager.Scene().FindActor("2");
// 1、设置Actor的父物体、调整Actor的子物体顺序
testActor1.SetParent(testActor2._pid, "2");
// 2、克隆选中的物体;
testActor1.Copy();
// 3、获取、设置 当前选中的物体;
// // 通过id获取当前选中的物体
let copyActor = gVrpManager.Scene().GetActor(id); //id为当前选中物体的id
copyActor.name = "vrpSdk";
// 4、撤销上一步操作、恢复撤销的操作;
// 撤销上一步操作
gVrpManager.Scene().Invoke("RevokeManage", "Undo");
// 恢复上一步操作
gVrpManager.Scene().Invoke("RevokeManage", "Redo");