virtools二维坐标系概念总结
来源:互联网 发布:客观评价张学良知乎 编辑:程序博客网 时间:2024/05/23 05:08
用vsl或SDK编写BB或插件时,获取二维平面坐标需要区分RenderContext的不同窗口,如下图所示:
1.Entire Window: RenderContext 上图最外侧红色圆点标记处
2.Window Rect:窗口矩形,与窗口分辨率有关。
3.View Rect:视口矩形,与摄像机分辨率(摄像机窗口纵横比)有关。
当调用Pick2D()方法获取二维帧时,需要注意的是传入的Vector2D参数是基于RenderContext坐标系的,而通过GetPosition()方法获取的Vector2D是基于ViewRect(视口矩形)坐标系的,由于坐标系的不同,如果不做处理,必然导致程序逻辑错误,达不到预期效果。
解决方法也简单,做Pick2D处理时,将二维坐标与窗口坐标和视口坐标相加,转换到渲染环境坐标系下。
VSL参考代码如下:
pIn:
_dEntity Entity2D
_picked Entity2D
///////////////////////////////////////////////
// 功能:二维帧捕获
// 输入:鼠标二维帧
// 输出:如果成功捕获,输出到的二维帧,否则为空
///////////////////////////////////////////////
static Vector2D vTL2dF;
static Vector2D vSize2dF;
main()
{
if(_dEntity == NULL)
{
_picked = NULL;
return;
}
RenderContext rc = bc.GetPlayerRenderContext();
rc.GetViewRect(viewRect);
rc.GetWindowRect(renderRect);
Vector2D subVect = renderRect.GetTopLeft() + viewRect.GetTopLeft();
_dEntity.GetPosition(vTL2dF);
_dEntity.GetSize(vSize2dF);
vTL2dF += (vSize2dF/2);
_picked = rc.Pick2D(vTL2dF + subVect);
}
- virtools二维坐标系概念总结
- Virtools
- virtools
- Virtools
- Virtools
- 二维坐标系的转换
- Virtools概念篇 - Virtools是什么、能做什么、适合谁用
- gis坐标系相关概念
- 使用visio画二维坐标系
- [cocos2dx]概念——坐标系
- 为virtools写的插件进行一下总结
- Windows中的坐标系总结
- GIS坐标系的总结
- iOS坐标系转换总结
- arcgis坐标系学习总结
- Windows中的坐标系总结
- Unity3D中的坐标系总结
- 二维坐标系同一条直线点最多
- Linux 目录结构
- JVM工作原理和特点
- IC与Module成本分析
- asp.net+FCKeditor上传图片显示叉叉图片无法显示的问题的解决方法
- 链表的简单创建
- virtools二维坐标系概念总结
- 用Schema验证XML文档
- 金线
- 为每一件无聊的工作找三种用途
- Linux 内核文档
- 29. 面向对象的LotusScript(五)之ExtDoc
- js中字符串拼接需注意的问题
- SecureCRT中文乱码、复制粘贴乱码解决办法
- RPC