Vuforia AR SDK对模型进行控制(平移、旋转、缩放)
来源:互联网 发布:unity3d插件 hud text 编辑:程序博客网 时间:2024/05/05 18:07
1、 写本地方法
// 设置缩放尺寸、旋转角度privatenative void setScale(float scale);private nativevoid setAngle(float angle);
2、 使用javah命令生成头文件。
生成之后会在工程目录下看到头文件,需要刷新:
3、 Native层调用本地方法。
经过javah命令之后,会生成对应native层的本地方法,例如:
在中
将方法拷贝到ImageTargets.cpp文件中,实现该方法:
这就完成JNI通信部分。注意变量要自己设定。
4、 使用触屏事件,将数据传递到native层中,即ImageTargets.cpp中的两个方法。
触屏当然要在Java层实现啦,在ImageTargets.java中:注意黄色背景部分。
publicbooleanonTouchEvent(MotionEvent event) { int pointerCount = event.getPointerCount(); int action = event.getAction(); // 单点触控的情况主要控制模型的旋转 if (pointerCount == 1) { switch (action) { case MotionEvent.ACTION_DOWN: first_x= event.getX(0); first_y = event.getY(0); System.out.println("ACTION_DOWN pointerCount=" + pointerCount); break; case MotionEvent.ACTION_UP: System.out.println("ACTION_UP pointerCount=" + pointerCount); break; case MotionEvent.ACTION_MOVE: System.out.println("ACTION_MOVE pointerCount=" + pointerCount);// Toast.makeText(ImageTargets.this,"sdsdsd", Toast.LENGTH_LONG).show(); float num_x = event.getX()-first_x; float num_y = event.getY()-first_y; float angle = (float) Math.atan(num_x/num_y); <span style="background-color: rgb(255, 255, 102);"> setAngle(angle);// 调用本地方法传值</span> Log.i("SCY", "------->>>"+num_x+":::"+angle); break; } } // 两点触控的情况主要控制模型的缩放 if (pointerCount == 2) { switch (action&MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: first_x = event.getX(0); first_y = event.getY(0); System.out.println("ACTION_DOWN pointerCount=" + pointerCount); break; case MotionEvent.ACTION_POINTER_DOWN: oldDist = (float) Math.sqrt((event.getX(0) -event.getX(1)) * (event.getX(0) - event.getX(1)) + (event.getY(0) -event.getY(1)) * (event.getY(0) - event.getY(1))); System.out.println("ACTION_UP pointerCount=" + pointerCount); break; case MotionEvent.ACTION_MOVE: System.out.println("ACTION_MOVE pointerCount=" + pointerCount); float newDist = (float) Math.sqrt((event.getX(0) -event.getX(1)) * (event.getX(0) - event.getX(1)) + (event.getY(0) -event.getY(1)) * (event.getY(0) - event.getY(1))); float scale= newDist/oldDist; if (scale>=1.5f) { scale = 1.5f; } elseif (scale<=0.5f) { scale = 0.5f; } <span style="background-color: rgb(255, 255, 102);"> setScale(scale);//调用本地方法传值</span> Log.i("SCY","--------->>>"+scale); break; } } returnsuper.onTouchEvent(event);}
5、 Native层OpenGL渲染
Native层获取从java层传递的值之后,需要使用OpenGL命令对模型进行控制,这个就在ImageTargets.cpp的JNIEXPORTvoid JNICALL
Java_com_qualcomm_QCARSamples_ImageTargets_ImageTargetsRenderer_renderFrame(JNIEnv*, jobject)方法中:
这三句分别控制模型的平移、旋转和缩放,传递的值在这里才起作用。
到这里,所有的都完成了。剩下的就是使用NDK编译生成so文件,再运行就可以了。
AR研发团队招募有梦想的年轻人,有兴趣可以私信我,最好是在深圳。
0 0
- Vuforia AR SDK对模型进行控制(平移、旋转、缩放)
- 高通 AR SDK对模型进行控制(平移、旋转、缩放)
- Vuforia SDK---- AR开发旋转缩放模型功能
- 基于EasyAR的Android端AR应用开发(三)---模型的旋转、缩放、平移
- OSG学习笔记11 物体控制—对点选物体进行平移、缩放、旋转
- Android | Vuforia 模型平移、旋转、放缩
- Android对图片进行平移,缩放,旋转操作
- Android对图片进行平移,缩放,旋转操作
- Unity3d物体模型(实现旋转缩放平移自动旋转)
- Unity3d物体模型(实现旋转缩放平移自动旋转)
- Bitmap简单操作-平移旋转缩放(VC++/Windows SDK)
- 基于vtkTransform进行旋转、平移和缩放
- unity 手势控制物体旋转缩放(ar)
- 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移
- iOS 利用平移缩放旋转手势对view实现对应的平移缩放旋转效果(一)
- unity3d对材质球的uv进行平移,缩放和旋转
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- Android单点触控技术,对图片进行平移,缩放,旋转操作
- glob 通配符
- request.GetResponse 400错误处理
- mysql报错unix:///var/mysql/mysql.sock
- mybatis 入门例子
- php MYSQL 数据备份类(实例)
- Vuforia AR SDK对模型进行控制(平移、旋转、缩放)
- 第十三周项目2-点与圆的位置关系&&圆与圆的大小关系
- android学习日记-5 观察者模式
- 中方暂停部分中越交往计划 将接回4000名中国工人 来源: 新京报 发布于:2014-05-19 14:54:49
- 且让我用花香润笔,用暖阳做墨
- uhsdjklgn
- CGHFGHGFG
- 请问如何使用RevitAPI创建体量?
- 黑马程序员_java中的网络编程