From 3fed66ece704f7db0510e7eeb7f9d21741c06cbb Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Thu, 24 Jun 2021 18:55:58 +0530 Subject: [PATCH 1/7] modify scaling of model --- .gitignore | 1 + .idea/.name | 1 + .idea/compiler.xml | 6 ++ .idea/gradle.xml | 21 ++++ .idea/jarRepositories.xml | 25 +++++ .idea/misc.xml | 2 +- .idea/vcs.xml | 6 ++ .../augmentedreality/MainActivity.kt | 95 ++++++++++-------- app/src/main/res/raw/astronaut.sfb | Bin 220920 -> 220920 bytes 9 files changed, 115 insertions(+), 42 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index aa724b7..8ccc4f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.iml .gradle /local.properties +/.idea /.idea/caches /.idea/libraries /.idea/modules.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..d010e37 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +AugmentedReality \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..8a3d936 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index fb0d77e..390c127 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 5353d2f..7be7b4c 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -2,63 +2,76 @@ package com.thecodework.augmentedreality import android.os.Build import android.os.Bundle +import android.util.Log import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import com.google.ar.sceneform.AnchorNode import com.google.ar.sceneform.rendering.ModelRenderable import com.google.ar.sceneform.ux.ArFragment +import com.google.ar.sceneform.ux.ScaleController import com.google.ar.sceneform.ux.TransformableNode class MainActivity : AppCompatActivity() { - private var arFragment: ArFragment? = null - private var modelRenderable: ModelRenderable? = null + private var arFragment: ArFragment? = null + private var modelRenderable: ModelRenderable? = null - @RequiresApi(Build.VERSION_CODES.N) - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - init() - } - @RequiresApi(Build.VERSION_CODES.N) - private fun init() { - arFragment = supportFragmentManager.findFragmentById(R.id.fragment) as ArFragment? - setUpModel() - setUpPlane() - } + @RequiresApi(Build.VERSION_CODES.N) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + init() + } + @RequiresApi(Build.VERSION_CODES.N) + private fun init() { + arFragment = supportFragmentManager.findFragmentById(R.id.fragment) as ArFragment? + setUpModel() + setUpPlane() + } - @RequiresApi(Build.VERSION_CODES.N) - private fun setUpModel() { - ModelRenderable.builder() - .setSource(this, R.raw.astronaut) - .build() - .thenAccept { renderable: ModelRenderable -> - modelRenderable = renderable - } - .exceptionally { throwable: Throwable? -> - Toast.makeText(this@MainActivity, "Model can't be Loaded", Toast.LENGTH_SHORT).show() - null - } - } + @RequiresApi(Build.VERSION_CODES.N) + private fun setUpModel() { + ModelRenderable.builder() + .setSource(this, R.raw.astronaut) + .build() + .thenAccept { renderable: ModelRenderable -> + modelRenderable = renderable + } + .exceptionally { throwable: Throwable? -> + Toast.makeText(this@MainActivity, "Model can't be Loaded", Toast.LENGTH_SHORT) + .show() + null + } + } - private fun setUpPlane() { - arFragment!!.setOnTapArPlaneListener { hitResult, plane, motionEvent -> - val anchor = hitResult.createAnchor() - val anchorNode = AnchorNode(anchor) - anchorNode.setParent(arFragment!!.arSceneView.scene) - createModel(anchorNode) + private fun setUpPlane() { + arFragment!!.setOnTapArPlaneListener { hitResult, plane, motionEvent -> + val anchor = hitResult.createAnchor() + val anchorNode = AnchorNode(anchor) + anchorNode.setParent(arFragment!!.arSceneView.scene) + createModel(anchorNode) + } } - } - private fun createModel(anchorNode: AnchorNode) { - val node = TransformableNode(arFragment!!.transformationSystem) - node.setParent(anchorNode) - node.renderable = modelRenderable - node.select() - } + private fun createModel(anchorNode: AnchorNode) { + Log.d("msg", "1") + val node = TransformableNode(arFragment!!.transformationSystem) + node.setParent(anchorNode) + node.renderable = modelRenderable //model creat + // node.scaleController.onContinueTransformation() + onScale(node) + node.select() + + } + + private fun onScale(node: TransformableNode) { + node.scaleController.maxScale = 1.0f + node.scaleController.elasticity = 0.5f + node.scaleController.minScale = 0.25f + } +} -} \ No newline at end of file diff --git a/app/src/main/res/raw/astronaut.sfb b/app/src/main/res/raw/astronaut.sfb index de459591d3c4d2190f26a65bc2e7a893574c0181..648b065c1d83883e3d792102bf3753d3bd5c2104 100644 GIT binary patch delta 112 zcmWl|yAi@L3;@tmsIx%^NNG#5B=;#;g2M7=5ef!i5enZ?Wv`SR@9tgadY$WMgIz+3 zY$}-1>R>M25|!A!qIj+<*Yr_BX Iop3uIKR;<8Bme*a delta 112 zcmWm2y%EAN3_#%%)Y*UmQd%r=1 Date: Fri, 2 Jul 2021 20:19:10 +0530 Subject: [PATCH 2/7] Added Touch on View --- .../thecodework/augmentedreality/MainActivity.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 7be7b4c..3173b2d 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -1,8 +1,11 @@ package com.thecodework.augmentedreality +import android.annotation.SuppressLint import android.os.Build import android.os.Bundle import android.util.Log +import android.view.MotionEvent +import android.view.View import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity @@ -12,7 +15,7 @@ import com.google.ar.sceneform.ux.ArFragment import com.google.ar.sceneform.ux.ScaleController import com.google.ar.sceneform.ux.TransformableNode -class MainActivity : AppCompatActivity() { +class MainActivity : AppCompatActivity(), View.OnTouchListener { private var arFragment: ArFragment? = null private var modelRenderable: ModelRenderable? = null @@ -28,6 +31,7 @@ class MainActivity : AppCompatActivity() { arFragment = supportFragmentManager.findFragmentById(R.id.fragment) as ArFragment? setUpModel() setUpPlane() + findViewById(R.id.view).setOnTouchListener(this) } @@ -52,6 +56,9 @@ class MainActivity : AppCompatActivity() { val anchorNode = AnchorNode(anchor) anchorNode.setParent(arFragment!!.arSceneView.scene) createModel(anchorNode) + + + Log.d("PinchCheck", "Motion x-->> " + motionEvent.x.toString()) } } @@ -73,5 +80,10 @@ class MainActivity : AppCompatActivity() { node.scaleController.minScale = 0.25f } + @SuppressLint("ClickableViewAccessibility") + override fun onTouch(p0: View?, p1: MotionEvent?): Boolean { + + } + } From f9b95411901c2640b5b8e0b2ac0ba2b7b0105513 Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Fri, 2 Jul 2021 20:22:42 +0530 Subject: [PATCH 3/7] Added log --- .../augmentedreality/MainActivity.kt | 89 +++++++++++++++++-- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 7be7b4c..8250948 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -1,33 +1,42 @@ package com.thecodework.augmentedreality +import android.annotation.SuppressLint import android.os.Build import android.os.Bundle +import android.os.Handler import android.util.Log +import android.view.GestureDetector +import android.view.MotionEvent +import android.view.ScaleGestureDetector +import android.view.View import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import com.google.ar.sceneform.AnchorNode import com.google.ar.sceneform.rendering.ModelRenderable -import com.google.ar.sceneform.ux.ArFragment -import com.google.ar.sceneform.ux.ScaleController -import com.google.ar.sceneform.ux.TransformableNode +import com.google.ar.sceneform.ux.* class MainActivity : AppCompatActivity() { private var arFragment: ArFragment? = null private var modelRenderable: ModelRenderable? = null + var objscale: ScaleGestureDetector? = null + @RequiresApi(Build.VERSION_CODES.N) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) init() + objscale = ScaleGestureDetector(this, PinzoomListener()) } + @RequiresApi(Build.VERSION_CODES.N) private fun init() { arFragment = supportFragmentManager.findFragmentById(R.id.fragment) as ArFragment? setUpModel() setUpPlane() + } @@ -52,11 +61,28 @@ class MainActivity : AppCompatActivity() { val anchorNode = AnchorNode(anchor) anchorNode.setParent(arFragment!!.arSceneView.scene) createModel(anchorNode) + Log.d( + "PinchCheck", + "Motion Event " + + motionEvent.action + "x axis " + + motionEvent.getX().toString() + " y axis " + + motionEvent.getY().toString() + "down time" + + motionEvent.downTime + "event time" + + motionEvent.eventTime + "pressure" + + motionEvent.pressure + "size" + + motionEvent.size + "x precision" + + motionEvent.xPrecision + "y precision" + + motionEvent.yPrecision + "device id" + + motionEvent.deviceId + "meta state" + + motionEvent.metaState + "edge flag" + + motionEvent.edgeFlags + ) + // objscale?.onTouchEvent(motionEvent) + } } private fun createModel(anchorNode: AnchorNode) { - Log.d("msg", "1") val node = TransformableNode(arFragment!!.transformationSystem) node.setParent(anchorNode) node.renderable = modelRenderable //model creat @@ -69,9 +95,62 @@ class MainActivity : AppCompatActivity() { private fun onScale(node: TransformableNode) { node.scaleController.maxScale = 1.0f - node.scaleController.elasticity = 0.5f + // node.scaleController.elasticity = 0.5f node.scaleController.minScale = 0.25f } + private fun triggerPinch(): PinchGesture { + val gesturePointersUtility = GesturePointersUtility(getResources().getDisplayMetrics()) + val motionEvent = + MotionEvent.obtain( + 8387, + 8387, + MotionEvent.ACTION_UP, + 401.44f, + 780.45f, + 1.0f, + 0.0176f, + 0, + 1.001f, + 1.001f, + 6, + 0 + ) + val actionId = motionEvent.getPointerId(motionEvent.actionIndex) + var p = 0 + // Determine if there is another pointer Id that has not yet been retained. + for (i in 0 until motionEvent.pointerCount) { + val pointerId = motionEvent.getPointerId(i) + if (pointerId == actionId) { + continue + } + if (gesturePointersUtility.isPointerIdRetained(pointerId)) { + continue + } + p = pointerId + } + return PinchGesture(gesturePointersUtility, motionEvent, p) + } + + inner class PinzoomListener : ScaleGestureDetector.SimpleOnScaleGestureListener() { + override fun onScale(detector: ScaleGestureDetector): Boolean { + val scaleFactor = detector.scaleFactor + if (scaleFactor > 1) { + Log.d("PinchCheck", "Zoom out") + } else { + Log.d("PinchCheck", "Zoom in") + } + return true + } + + override fun onScaleBegin(detector: ScaleGestureDetector): Boolean { + return true + } + + override fun onScaleEnd(detector: ScaleGestureDetector) { + } + } + + } From 2e2b446772b2bbdc236790b5fe5007b68d483183 Mon Sep 17 00:00:00 2001 From: SonamAgrahari Date: Fri, 2 Jul 2021 20:35:48 +0530 Subject: [PATCH 4/7] Added log --- .../augmentedreality/MainActivity.kt | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 65af530..136af81 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -156,7 +156,26 @@ class MainActivity : AppCompatActivity(), View.OnTouchListener { @SuppressLint("ClickableViewAccessibility") - override fun onTouch(p0: View?, p1: MotionEvent?): Boolean { + override fun onTouch(p0: View?, motionEvent: MotionEvent?): Boolean { + + if (motionEvent != null) { + Log.d( + "PinchCheck", + "Motion Event " + + motionEvent.action + "x axis " + + motionEvent.getX().toString() + " y axis " + + motionEvent.getY().toString() + "down time" + + motionEvent.downTime + "event time" + + motionEvent.eventTime + "pressure" + + motionEvent.pressure + "size" + + motionEvent.size + "x precision" + + motionEvent.xPrecision + "y precision" + + motionEvent.yPrecision + "device id" + + motionEvent.deviceId + "meta state" + + motionEvent.metaState + "edge flag" + + motionEvent.edgeFlags + ) + } return true } From a147869420af03559d819caa13d6ababe4156384 Mon Sep 17 00:00:00 2001 From: romilwadhwani Date: Fri, 2 Jul 2021 20:39:07 +0530 Subject: [PATCH 5/7] Modified triggerPinc --- .../thecodework/augmentedreality/MainActivity.kt | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 136af81..c58fa3d 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -120,19 +120,7 @@ class MainActivity : AppCompatActivity(), View.OnTouchListener { 0 ) val actionId = motionEvent.getPointerId(motionEvent.actionIndex) - var p = 0 - // Determine if there is another pointer Id that has not yet been retained. - for (i in 0 until motionEvent.pointerCount) { - val pointerId = motionEvent.getPointerId(i) - if (pointerId == actionId) { - continue - } - if (gesturePointersUtility.isPointerIdRetained(pointerId)) { - continue - } - p = pointerId - } - return PinchGesture(gesturePointersUtility, motionEvent, p) + return PinchGesture(gesturePointersUtility, motionEvent, actionId) } inner class PinzoomListener : ScaleGestureDetector.SimpleOnScaleGestureListener() { From 6a6f91426d3c188f43a40ea67b4b2280b18c7e8a Mon Sep 17 00:00:00 2001 From: romilwadhwani Date: Fri, 2 Jul 2021 20:46:44 +0530 Subject: [PATCH 6/7] Added view variable --- .../java/com/thecodework/augmentedreality/MainActivity.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index c58fa3d..8b64911 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -13,11 +13,13 @@ import android.view.View import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.isVisible import com.google.ar.sceneform.AnchorNode import com.google.ar.sceneform.rendering.ModelRenderable import com.google.ar.sceneform.ux.* class MainActivity : AppCompatActivity(), View.OnTouchListener { + private var view: View? = null private var arFragment: ArFragment? = null private var modelRenderable: ModelRenderable? = null var objscale: ScaleGestureDetector? = null @@ -38,6 +40,7 @@ class MainActivity : AppCompatActivity(), View.OnTouchListener { setUpModel() setUpPlane() + view = findViewById(R.id.view) findViewById(R.id.view).setOnTouchListener(this) } @@ -89,7 +92,8 @@ class MainActivity : AppCompatActivity(), View.OnTouchListener { val node = TransformableNode(arFragment!!.transformationSystem) node.setParent(anchorNode) node.renderable = modelRenderable //model creat - // node.scaleController.onContinueTransformation() +// node.scaleController.onContinueTransformation(triggerPinch()) +// view?.isVisible = false onScale(node) node.select() From 76004dc6a1fcecf2e0d9594dba099f7ab86da425 Mon Sep 17 00:00:00 2001 From: romilwadhwani Date: Sat, 10 Jul 2021 17:48:06 +0530 Subject: [PATCH 7/7] Addressed feedback --- .../main/java/com/thecodework/augmentedreality/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt index 8b64911..0f13c7a 100644 --- a/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt +++ b/app/src/main/java/com/thecodework/augmentedreality/MainActivity.kt @@ -91,7 +91,7 @@ class MainActivity : AppCompatActivity(), View.OnTouchListener { private fun createModel(anchorNode: AnchorNode) { val node = TransformableNode(arFragment!!.transformationSystem) node.setParent(anchorNode) - node.renderable = modelRenderable //model creat + node.renderable = modelRenderable // node.scaleController.onContinueTransformation(triggerPinch()) // view?.isVisible = false onScale(node)