3D相关事件
画面级事件
定义在page上,具有:
- onLoad(params)事件,当3D场景被加载时调用
- onUnload事件,当3D场景关闭时被调用
- onClick(params),当在场景任意位置点击鼠标左键时触发。params参数:{x,y,width,height},x、y表示鼠标的坐标位置,width、height表示窗体的宽和高
- onRClick(params),当在场景任意位置点击鼠标右键时触发。params参数:{x,y,width,height},x、y表示鼠标的坐标位置,width、height表示窗体的宽和高
- onWindowResize(params),当窗体大小发生改变时触发,如:浏览器放缩、全屏等操作时。
具体对象事件
定义在选中对象上,包括:
- onLoad(params)事件,当3D对象被加载时调用
- onUnload事件,当3D对象关闭时被调用
- onClick(objectname,value),当在场景点击鼠标左键时触发。params参数:{x,y,width,height},x、y表示鼠标的坐标位置,width、height表示窗体的宽和高
- onBecomeNear(objectname,distance),当靠近对象时触发,distance传入对象的距离,以米为单位
- onBecomeFar(objectname,distance),当远离对象时触发,distance传入对象的距离,以米为单位
3D提供的脚本
- pk3d.getScene(shapeName)
- 得到3d场景对象
- 传入参数:控件名称,该名称在控件属性中可以修改和查看
- 返回:3d场景对象
- pk3d.getModelByName(modelName,shapeName)
- 得到3d场景对象
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- shapeName,2D画面中配置的3D控件名称
- 返回:模型对象
- pk3d.center(modelName,shapeName)
- 模型居中
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- shapeName,2D画面中配置的3D控件名称
- 返回:以该模型居中后的场景
- pk3d.getBoundingBox(modelName,shapeName)
- 功能:获取某个模型的边界包围矩形
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- shapeName,2D画面中配置的3D控件名称
- 返回:包围矩形的最大和最小值
- pk3d.showModel(modelName,isVisible, shapeName)
- 功能:显示或隐藏某个模型
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- isVisible,true:显示该模型;false:隐藏该模型
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.isModelVisible(modelName,shapeName)
- 功能:获取某个模型的是否在显示
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- shapeName,2D画面中配置的3D控件名称
- 返回:该模型是否可见,true或false
- pk3d.setFillColor(modelName,color,shapeName)
- 功能:填充某个模型颜色为color色
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- color,RGB表示的颜色,如:"255,255,255"
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.setTextStyle(modelName, fontStyle, fillStyle, lineStyle, shapeName)
- 功能:修改字体样式
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- fontStyle,fontStyle={"fontFamily":"Arial",size,italic,underline,textAlign,vAlign,orientation,bold}
fillStyle="color",字符串类型的RGB16进制颜色,或渐变对象。
示例:"#00" 表示黑色
- "#FF0000"表示红色
- "#00FF00",表示绿色
lineStyle={"width":1} // 文本的线的颜色
- shapeName,2D画面中配置的3D控件名称
- 返回:
- pk3d.setText(modelName,text,shapeName)
- 功能:获取某个模型的边界包围矩形
- 传入参数:
- modelName, 3D场景编辑器中的模型数中某个模型名称,该名称需要唯一
- text,文本内容
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.setCurrentCamera(cameraName,shapeName)
- 功能:获取某个模型的边界包围矩形
- 传入参数:
- cameraName, 3D场景编辑器中的配置的摄像头名称
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.render(shapeName)
- 功能:绘制整个场景
- 传入参数:
- shapeName,2D画面中配置的3D控件名称
- 返回:
- pk3d.startPilot(lineInfo, cycleNum, shapeName)
- 功能:让当前相机沿着一个路线、以一定速度漫游,从起始点漫游到结束点
- 传入参数:
- lineInfo, 给定的模型数组,至少需要2个对象,每个对象格式为{"position":"S1","lookat":"S1","seconds":3},数组格式:
[{"position":"S1","lookat":"S1","seconds":3},
{"position":"S2","lookat":"S2","seconds":9},
{"position":"S5","lookat":"S5","seconds":6},
{"position":"S6","lookat":"S6","seconds":6},
{"position":"S7","lookat":"S7","seconds":3},
{"position":"Send","lookat":"Send","seconds":24}] - isCycle,isCycle为-1表示无穷循环;为0或undefined表示漫游次数1结束;为其他整数表示漫游循环N次
- shapeName,2D画面中配置的3D控件名称
- lineInfo, 给定的模型数组,至少需要2个对象,每个对象格式为{"position":"S1","lookat":"S1","seconds":3},数组格式:
- 返回:无
- 实例:pk3d.startPilot([
{"position":"S1","lookat":"S1","seconds":3},
{"position":"S2","lookat":"S2","seconds":9},
{"position":"S3","lookat":"S3","seconds":6},
], 1, 'e3D'); - 需要在漫游路径的关键点处摆放任意模型(尺寸尽量小一点),实例中关键点的模型名分别为S1,S2,S3,意为相机从S1处漫游到S2处再从S2处漫游到S3(直线只需要两个关键点)
- lookat为漫游过程中相机的朝向
- seconds为从上一个关键点漫游到此关键点的时间(单位秒),由于第一个对象是漫游的起始点,所以时间传多少无影响
- pk3d.stopPilot(shapeName)
- 功能:停止当前漫游,摄像头保留在当前位置
- 传入参数:
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.setCameraPose(cameraName,shapeName);
- 功能:切换当前摄像机
- 传入参数:
- cameraName,要切换到的摄像机名称
- shapeName,2D画面中配置的3D控件名称
- 返回:无
- pk3d.setMaterialParameters(modelName,parameters);
- 功能:设置材质的属性,典型如:颜色
- 传入参数:
- modelName,要切换到的摄像机名称
- parameters,json对象格式
- 返回:无
- 示例:pk3d.setMaterialPameters("Text",{color:111111})
pk3d.getModelsWithAnimation()
- 功能:获得具有内置动画的模型名称的数组
- 示例:pk3d.getModelsWithAnimation()
- pk3d.playAnimation(modelName, animationIndex, actionParameters)
- 功能:播放模型自带的动画
- 传入参数
- modelName,具有动画的模型的名称
- animationIndex, 当模型具有多个动画时,表示执行第几个。0是第一个
- 该参数为undefined,表示第1个,即参数值为0
- 该参数的值>=动画数组的个数,则取最后一个动画
- actionParameters,动作参数,json对象,{timeScale:n}
- 可以为undefined,表示按照正常顺序播放
- timeScale,表示时间顺序,1表示按正常顺序播放,-1表示逆向播放
- 示例:
- pk3d.playAnimation("Group")
- pk3d.playAnimation("Group",undefined,{})
- pk3d.stopAnimation(modelName)
- 功能:停止播放模型自带的动画,其状态保留在停止前的那一帧(不是初始状态)
- 传入参数
- modelName,具有动画的模型的名称
- pk3d.playAllAnimations(actionParameters)
- 功能:同时播放场景中所有具有动画的模型的第一个动画
- 传入参数
- actionParameters,动作参数,json对象,{timeScale:n}
- 可以为undefined,表示按照正常顺序播放
- timeScale,表示时间顺序,1表示按正常顺序播放,-1表示逆向播放
- actionParameters,动作参数,json对象,{timeScale:n}
- pk3d.stopAllAnimations()
- 功能:同时停止场景中所有正在播放的内置动画
- pk3d.getImages()
- 功能:得到场景中所有的图片路径。对于图片内容已经包含在模型的情况则不会返回
- 返回值:数组,每个数组元素包含:uuid和url两个元素,见下面例子的返回值
- 示例:pk3d.getImages()