diff options
Diffstat (limited to 'libs/rs/java/ModelViewer/src/com/android')
12 files changed, 0 insertions, 1430 deletions
diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java deleted file mode 100644 index 0e2004f..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/A3DSelector.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.File; -import java.io.FileFilter; -import java.util.ArrayList; -import java.util.List; - -import android.app.ListActivity; -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ListView; - -/** - * A list view where the last item the user clicked is placed in - * the "activated" state, causing its background to highlight. - */ -public class A3DSelector extends ListActivity { - - File[] mCurrentSubList; - File mCurrentFile; - - class A3DFilter implements FileFilter { - public boolean accept(File file) { - if (file.isDirectory()) { - return true; - } - return file.getName().endsWith(".a3d"); - } - } - - private void populateList(File file) { - - mCurrentFile = file; - setTitle(mCurrentFile.getAbsolutePath() + "/*.a3d"); - List<String> names = new ArrayList<String>(); - names.add(".."); - - mCurrentSubList = mCurrentFile.listFiles(new A3DFilter()); - - if (mCurrentSubList != null) { - for (int i = 0; i < mCurrentSubList.length; i ++) { - String fileName = mCurrentSubList[i].getName(); - if (mCurrentSubList[i].isDirectory()) { - fileName = "/" + fileName; - } - names.add(fileName); - } - } - - // Use the built-in layout for showing a list item with a single - // line of text whose background is changes when activated. - setListAdapter(new ArrayAdapter<String>(this, - android.R.layout.simple_list_item_activated_1, names)); - getListView().setTextFilterEnabled(true); - - // Tell the list view to show one checked/activated item at a time. - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - populateList(new File("/sdcard/")); - } - - @Override - protected void onListItemClick(ListView l, View v, int position, long id) { - if (position == 0) { - File parent = mCurrentFile.getParentFile(); - if (parent == null) { - return; - } - populateList(parent); - return; - } - - // the first thing in list is parent directory - File selectedFile = mCurrentSubList[position - 1]; - if (selectedFile.isDirectory()) { - populateList(selectedFile); - return; - } - - Intent resultIntent = new Intent(); - resultIntent.setData(Uri.fromFile(selectedFile)); - setResult(RESULT_OK, resultIntent); - finish(); - } - -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java deleted file mode 100644 index b8717a7..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraph.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; - -import java.lang.Runtime; - -public class SceneGraph extends Activity { - - private SceneGraphView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SceneGraphView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - -} - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java deleted file mode 100644 index f91f31e..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphRS.java +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.Font.Style; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SceneGraphRS { - - private final int STATE_LAST_FOCUS = 1; - - int mWidth; - int mHeight; - int mRotation; - - public SceneGraphRS() { - } - - public void init(RenderScriptGL rs, Resources res, int width, int height) { - mRS = rs; - mRes = res; - mWidth = width; - mHeight = height; - mRotation = 0; - initRS(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Mesh mMesh; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptC_scenegraph mScript; - private ScriptC_transform mTransformScript; - - int mLastX; - int mLastY; - - public void touchEvent(int x, int y) { - int dx = mLastX - x; - if (Math.abs(dx) > 50 || Math.abs(dx) < 3) { - dx = 0; - } - - mRotation -= dx; - if (mRotation > 360) { - mRotation -= 360; - } - if (mRotation < 0) { - mRotation += 360; - } - - mScript.set_gRotate(-(float)mRotation); - - mLastX = x; - mLastY = y; - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation() { - String allocString = "Displaying file: R.raw.robot"; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - SgTransform mRootTransform; - SgTransform mGroup1; - - SgTransform mRobot1; - SgTransform mRobot2; - - void initTransformHierarchy() { - mRootTransform = new SgTransform(mRS); - - mGroup1 = new SgTransform(mRS); - mRootTransform.addChild(mGroup1); - - mRobot1 = new SgTransform(mRS); - mRobot2 = new SgTransform(mRS); - - mGroup1.addChild(mRobot1); - mGroup1.addChild(mRobot2); - - mGroup1.setTransform(0, new Float4(0.0f, 0.0f, -15.0f, 0.0f), TransformType.TRANSLATE); - mGroup1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 15.0f), TransformType.ROTATE); - - mRobot1.setTransform(0, new Float4(-3.0f, -0.5f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot1.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, 20.0f), TransformType.ROTATE); - mRobot1.setTransform(2, new Float4(0.2f, 0.2f, 0.2f, 0.0f), TransformType.SCALE); - - mRobot2.setTransform(0, new Float4(3.0f, 0.0f, 0.0f, 0.0f), TransformType.TRANSLATE); - mRobot2.setTransform(1, new Float4(0.0f, 1.0f, 0.0f, -20.0f), TransformType.ROTATE); - mRobot2.setTransform(2, new Float4(0.3f, 0.3f, 0.3f, 0.0f), TransformType.SCALE); - } - - private void initRS() { - - mScript = new ScriptC_scenegraph(mRS, mRes, R.raw.scenegraph); - mTransformScript = new ScriptC_transform(mRS, mRes, R.raw.transform); - mTransformScript.set_transformScript(mTransformScript); - - mScript.set_gTransformRS(mTransformScript); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - FileA3D.IndexEntry entry = model.getIndexEntry(0); - if (entry == null || entry.getEntryType() != FileA3D.EntryType.MESH) { - Log.e("rs", "could not load model"); - } else { - mMesh = (Mesh)entry.getObject(); - mScript.set_gTestMesh(mMesh); - } - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation(); - - initTransformHierarchy(); - - mScript.bind_gRootNode(mRootTransform.getField()); - - mScript.bind_gGroup(mGroup1.mParent.mChildField); - mScript.bind_gRobot1(mRobot1.mParent.mChildField); - mScript.set_gRobot1Index(mRobot1.mIndexInParentGroup); - mScript.bind_gRobot2(mRobot2.mParent.mChildField); - mScript.set_gRobot2Index(mRobot2.mIndexInParentGroup); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java deleted file mode 100644 index 0b6a3b8..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SceneGraphView.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.ArrayList; -import java.util.concurrent.Semaphore; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.Handler; -import android.os.Message; -import android.util.AttributeSet; -import android.util.Log; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.KeyEvent; -import android.view.MotionEvent; - -public class SceneGraphView extends RSSurfaceView { - - public SceneGraphView(Context context) { - super(context); - //setFocusable(true); - } - - private RenderScriptGL mRS; - private SceneGraphRS mRender; - - - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRS.setSurface(holder, w, h); - mRender = new SceneGraphRS(); - mRender.init(mRS, getResources(), w, h); - } - } - - @Override - protected void onDetachedFromWindow() { - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - // break point at here - // this method doesn't work when 'extends View' include 'extends ScrollView'. - return super.onKeyDown(keyCode, event); - } - - - @Override - public boolean onTouchEvent(MotionEvent ev) - { - boolean ret = true; - int act = ev.getAction(); - if (act == ev.ACTION_UP) { - ret = false; - } - - mRender.touchEvent((int)ev.getX(), (int)ev.getY()); - return ret; - } -} - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java deleted file mode 100644 index f5484e2..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; -import java.util.Map; -import java.util.Vector; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.Element.Builder; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - -enum TransformType { - - NONE(0), - TRANSLATE(1), - ROTATE(2), - SCALE(3); - - int mID; - TransformType(int id) { - mID = id; - } -} - -public class SgTransform { - - - ScriptField_SgTransform mTransformField; - ScriptField_SgTransform mChildField; - public ScriptField_SgTransform.Item mTransformData; - - RenderScript mRS; - - Vector mChildren; - SgTransform mParent; - int mIndexInParentGroup; - - public void setParent(SgTransform parent, int parentIndex) { - mParent = parent; - mIndexInParentGroup = parentIndex; - } - - public void addChild(SgTransform child) { - mChildren.add(child); - child.setParent(this, mChildren.size() - 1); - } - - public void setTransform(int index, Float4 value, TransformType type) { - mTransformData.transforms[index] = value; - mTransformData.transformTypes[index] = type.mID; - } - - void initData() { - int numElements = mTransformData.transforms.length; - mTransformData.transformTypes = new int[numElements]; - for (int i = 0; i < numElements; i ++) { - mTransformData.transforms[i] = new Float4(0, 0, 0, 0); - mTransformData.transformTypes[i] = TransformType.NONE.mID; - } - - mTransformData.isDirty = 1; - mTransformData.children = null; - } - - public SgTransform(RenderScript rs) { - mRS = rs; - mTransformData = new ScriptField_SgTransform.Item(); - mChildren = new Vector(); - initData(); - } - - public ScriptField_SgTransform.Item getData() { - if (mChildren.size() != 0) { - mChildField = new ScriptField_SgTransform(mRS, mChildren.size()); - mTransformData.children = mChildField.getAllocation(); - - for (int i = 0; i < mChildren.size(); i ++) { - SgTransform child = (SgTransform)mChildren.get(i); - mChildField.set(child.getData(), i, false); - } - mChildField.copyAll(); - } - - return mTransformData; - } - - public ScriptField_SgTransform getField() { - mTransformField = new ScriptField_SgTransform(mRS, 1); - mTransformField.set(getData(), 0, true); - return mTransformField; - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java deleted file mode 100644 index 01cb709..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModel.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScript; - -import android.app.Activity; -import android.content.res.Configuration; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.provider.Settings.System; -import android.util.Config; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.MenuInflater; -import android.view.Window; -import android.widget.Button; -import android.widget.ListView; -import android.net.Uri; - -import java.lang.Runtime; - -public class SimpleModel extends Activity { - - private SimpleModelView mView; - - @Override - public void onCreate(Bundle icicle) { - super.onCreate(icicle); - - // Create our Preview view and set it as the content of our - // Activity - mView = new SimpleModelView(this); - setContentView(mView); - } - - @Override - protected void onResume() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onResume(); - mView.resume(); - } - - @Override - protected void onPause() { - // Ideally a game should implement onResume() and onPause() - // to take appropriate action when the activity looses focus - super.onPause(); - mView.pause(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.loader_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.load_model: - loadModel(); - return true; - case R.id.display_options: - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private static final int FIND_A3D_MODEL = 10; - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == RESULT_OK) { - if (requestCode == FIND_A3D_MODEL) { - Uri selectedImageUri = data.getData(); - Log.e("Selected Path: ", selectedImageUri.getPath()); - mView.loadA3DFile(selectedImageUri.getPath()); - } - } - } - - public void loadModel() { - Intent intent = new Intent(); - intent.setAction(Intent.ACTION_PICK); - intent.setClassName("com.android.modelviewer", - "com.android.modelviewer.A3DSelector"); - startActivityForResult(intent, FIND_A3D_MODEL); - } - -} - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java deleted file mode 100644 index 63ef466..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelRS.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import java.io.Writer; - -import android.content.res.Resources; -import android.renderscript.*; -import android.renderscript.ProgramStore.DepthFunc; -import android.util.Log; - - -public class SimpleModelRS { - - public SimpleModelRS() { - } - - public void init(RenderScriptGL rs, Resources res) { - mRS = rs; - mRes = res; - initRS(); - } - - public void surfaceChanged() { - mRS.getWidth(); - mRS.getHeight(); - } - - private Resources mRes; - private RenderScriptGL mRS; - private Sampler mSampler; - private ProgramStore mPSBackground; - private ProgramFragment mPFBackground; - private ProgramVertex mPVBackground; - private ProgramVertexFixedFunction.Constants mPVA; - - private Allocation mGridImage; - private Allocation mAllocPV; - - private Font mItalic; - private Allocation mTextAlloc; - - private ScriptField_MeshInfo mMeshes; - private ScriptC_simplemodel mScript; - - - public void onActionDown(float x, float y) { - mScript.invoke_onActionDown(x, y); - } - - public void onActionScale(float scale) { - mScript.invoke_onActionScale(scale); - } - - public void onActionMove(float x, float y) { - mScript.invoke_onActionMove(x, y); - } - - private void initPFS() { - ProgramStore.Builder b = new ProgramStore.Builder(mRS); - - b.setDepthFunc(ProgramStore.DepthFunc.LESS); - b.setDitherEnabled(false); - b.setDepthMaskEnabled(true); - mPSBackground = b.create(); - - mScript.set_gPFSBackground(mPSBackground); - } - - private void initPF() { - Sampler.Builder bs = new Sampler.Builder(mRS); - bs.setMinification(Sampler.Value.LINEAR); - bs.setMagnification(Sampler.Value.LINEAR); - bs.setWrapS(Sampler.Value.CLAMP); - bs.setWrapT(Sampler.Value.CLAMP); - mSampler = bs.create(); - - ProgramFragmentFixedFunction.Builder b = new ProgramFragmentFixedFunction.Builder(mRS); - b.setTexture(ProgramFragmentFixedFunction.Builder.EnvMode.REPLACE, - ProgramFragmentFixedFunction.Builder.Format.RGBA, 0); - mPFBackground = b.create(); - mPFBackground.bindSampler(mSampler, 0); - - mScript.set_gPFBackground(mPFBackground); - } - - private void initPV() { - ProgramVertexFixedFunction.Builder pvb = new ProgramVertexFixedFunction.Builder(mRS); - mPVBackground = pvb.create(); - - mPVA = new ProgramVertexFixedFunction.Constants(mRS); - ((ProgramVertexFixedFunction)mPVBackground).bindConstants(mPVA); - - mScript.set_gPVBackground(mPVBackground); - } - - private void loadImage() { - mGridImage = Allocation.createFromBitmapResource(mRS, mRes, R.drawable.robot, - Allocation.MipmapControl.MIPMAP_ON_SYNC_TO_TEXTURE, - Allocation.USAGE_GRAPHICS_TEXTURE); - mScript.set_gTGrid(mGridImage); - } - - private void initTextAllocation(String fileName) { - String allocString = "Displaying file: " + fileName; - mTextAlloc = Allocation.createFromString(mRS, allocString, Allocation.USAGE_SCRIPT); - mScript.set_gTextAlloc(mTextAlloc); - } - - private void initMeshes(FileA3D model) { - int numEntries = model.getIndexEntryCount(); - int numMeshes = 0; - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - numMeshes ++; - } - } - - if (numMeshes > 0) { - mMeshes = new ScriptField_MeshInfo(mRS, numMeshes); - - for (int i = 0; i < numEntries; i ++) { - FileA3D.IndexEntry entry = model.getIndexEntry(i); - if (entry != null && entry.getEntryType() == FileA3D.EntryType.MESH) { - Mesh mesh = entry.getMesh(); - mMeshes.set_mMesh(i, mesh, false); - mMeshes.set_mNumIndexSets(i, mesh.getPrimitiveCount(), false); - } - } - mMeshes.copyAll(); - } else { - throw new RSRuntimeException("No valid meshes in file"); - } - - mScript.bind_gMeshes(mMeshes); - mScript.invoke_updateMeshInfo(); - } - - public void loadA3DFile(String path) { - FileA3D model = FileA3D.createFromFile(mRS, path); - initMeshes(model); - initTextAllocation(path); - } - - private void initRS() { - - mScript = new ScriptC_simplemodel(mRS, mRes, R.raw.simplemodel); - - initPFS(); - initPF(); - initPV(); - - loadImage(); - - FileA3D model = FileA3D.createFromResource(mRS, mRes, R.raw.robot); - initMeshes(model); - - mItalic = Font.create(mRS, mRes, "serif", Font.Style.ITALIC, 8); - mScript.set_gItalic(mItalic); - - initTextAllocation("R.raw.robot"); - - mRS.bindRootScript(mScript); - } -} - - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java deleted file mode 100644 index 9ab0f22..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SimpleModelView.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.modelviewer; - -import android.renderscript.RSSurfaceView; -import android.renderscript.RenderScriptGL; - -import android.content.Context; -import android.view.MotionEvent; -import android.view.SurfaceHolder; -import android.view.ScaleGestureDetector; -import android.util.Log; - -public class SimpleModelView extends RSSurfaceView { - - private RenderScriptGL mRS; - private SimpleModelRS mRender; - - private ScaleGestureDetector mScaleDetector; - - private static final int INVALID_POINTER_ID = -1; - private int mActivePointerId = INVALID_POINTER_ID; - - public SimpleModelView(Context context) { - super(context); - ensureRenderScript(); - mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); - } - - private void ensureRenderScript() { - if (mRS == null) { - RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); - sc.setDepth(16, 24); - mRS = createRenderScriptGL(sc); - mRender = new SimpleModelRS(); - mRender.init(mRS, getResources()); - } - } - - @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - ensureRenderScript(); - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - super.surfaceChanged(holder, format, w, h); - mRender.surfaceChanged(); - } - - @Override - protected void onDetachedFromWindow() { - mRender = null; - if (mRS != null) { - mRS = null; - destroyRenderScriptGL(); - } - } - - public void loadA3DFile(String path) { - mRender.loadA3DFile(path); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - mScaleDetector.onTouchEvent(ev); - - boolean ret = false; - float x = ev.getX(); - float y = ev.getY(); - - final int action = ev.getAction(); - - switch (action & MotionEvent.ACTION_MASK) { - case MotionEvent.ACTION_DOWN: { - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(0); - ret = true; - break; - } - case MotionEvent.ACTION_MOVE: { - if (!mScaleDetector.isInProgress()) { - mRender.onActionMove(x, y); - } - mRender.onActionDown(x, y); - ret = true; - break; - } - - case MotionEvent.ACTION_UP: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_CANCEL: { - mActivePointerId = INVALID_POINTER_ID; - break; - } - - case MotionEvent.ACTION_POINTER_UP: { - final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) - >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; - final int pointerId = ev.getPointerId(pointerIndex); - if (pointerId == mActivePointerId) { - // This was our active pointer going up. Choose a new - // active pointer and adjust accordingly. - final int newPointerIndex = pointerIndex == 0 ? 1 : 0; - x = ev.getX(newPointerIndex); - y = ev.getY(newPointerIndex); - mRender.onActionDown(x, y); - mActivePointerId = ev.getPointerId(newPointerIndex); - } - break; - } - } - - return ret; - } - - private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { - @Override - public boolean onScale(ScaleGestureDetector detector) { - mRender.onActionScale(detector.getScaleFactor()); - return true; - } - } -} - - diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs deleted file mode 100644 index 3679068..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "rs_graphics.rsh" -#include "transform_def.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; -rs_mesh gTestMesh; - -rs_program_store gPFSBackground; - -float gRotate; - -rs_font gItalic; -rs_allocation gTextAlloc; - -rs_script gTransformRS; - -SgTransform *gGroup; -SgTransform *gRobot1; -int gRobot1Index; -SgTransform *gRobot2; -int gRobot2Index; - -SgTransform *gRootNode; - -void init() { - gRotate = 0.0f; -} - -int root(int launchID) { - - gGroup->transforms[1].w += 0.5f; - gGroup->isDirty = 1; - - SgTransform *robot1Ptr = gRobot1 + gRobot1Index; - - robot1Ptr->transforms[1].w -= 1.5f; - robot1Ptr->isDirty = 1; - - SgTransform *robot2Ptr = gRobot2 + gRobot2Index; - robot2Ptr->transforms[1].w += 2.5f; - robot2Ptr->isDirty = 1; - - rsForEach(gTransformRS, gRootNode->children, gRootNode->children, 0); - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 0.1f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rsgProgramVertexLoadModelMatrix(&robot1Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - rsgProgramVertexLoadModelMatrix(&robot2Ptr->globalMat); - rsgDrawMesh(gTestMesh); - - //color(0.3f, 0.3f, 0.3f, 1.0f); - rsgDrawText("Renderscript transform test", 30, 695); - - rsgBindFont(gItalic); - rsgDrawText(gTextAlloc, 30, 730); - - return 10; -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs deleted file mode 100644 index 1034b85..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/simplemodel.rs +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "rs_graphics.rsh" - -rs_program_vertex gPVBackground; -rs_program_fragment gPFBackground; - -rs_allocation gTGrid; - -rs_program_store gPFSBackground; - -rs_font gItalic; -rs_allocation gTextAlloc; - -typedef struct MeshInfo { - rs_mesh mMesh; - int mNumIndexSets; - float3 bBoxMin; - float3 bBoxMax; -} MeshInfo_t; - -MeshInfo_t *gMeshes; - -static float3 gLookAt; - -static float gRotateX; -static float gRotateY; -static float gZoom; - -static float gLastX; -static float gLastY; - -void onActionDown(float x, float y) { - gLastX = x; - gLastY = y; -} - -void onActionScale(float scale) { - - gZoom *= 1.0f / scale; - gZoom = max(0.1f, min(gZoom, 500.0f)); -} - -void onActionMove(float x, float y) { - float dx = gLastX - x; - float dy = gLastY - y; - - if (fabs(dy) <= 2.0f) { - dy = 0.0f; - } - if (fabs(dx) <= 2.0f) { - dx = 0.0f; - } - - gRotateY -= dx; - if (gRotateY > 360) { - gRotateY -= 360; - } - if (gRotateY < 0) { - gRotateY += 360; - } - - gRotateX -= dy; - gRotateX = min(gRotateX, 80.0f); - gRotateX = max(gRotateX, -80.0f); - - gLastX = x; - gLastY = y; -} - -void init() { - gRotateX = 0.0f; - gRotateY = 0.0f; - gZoom = 50.0f; - gLookAt = 0.0f; -} - -void updateMeshInfo() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgMeshComputeBoundingBox(info->mMesh, - &minX, &minY, &minZ, - &maxX, &maxY, &maxZ); - info->bBoxMin = (minX, minY, minZ); - info->bBoxMax = (maxX, maxY, maxZ); - gLookAt += (info->bBoxMin + info->bBoxMax)*0.5f; - } - gLookAt = gLookAt / (float)size; -} - -static void renderAllMeshes() { - rs_allocation allMeshes = rsGetAllocation(gMeshes); - int size = rsAllocationGetDimX(allMeshes); - gLookAt = 0.0f; - float minX, minY, minZ, maxX, maxY, maxZ; - for (int i = 0; i < size; i++) { - MeshInfo_t *info = (MeshInfo_t*)rsGetElementAt(allMeshes, i); - rsgDrawMesh(info->mMesh); - } -} - -void drawDescription() { - uint width = rsgGetWidth(); - uint height = rsgGetHeight(); - int left = 0, right = 0, top = 0, bottom = 0; - - rsgBindFont(gItalic); - - rsgMeasureText(gTextAlloc, &left, &right, &top, &bottom); - rsgDrawText(gTextAlloc, 2 -left, height - 2 + bottom); -} - -int root(int launchID) { - - rsgClearColor(1.0f, 1.0f, 1.0f, 1.0f); - rsgClearDepth(1.0f); - - rsgBindProgramVertex(gPVBackground); - rs_matrix4x4 proj; - float aspect = (float)rsgGetWidth() / (float)rsgGetHeight(); - rsMatrixLoadPerspective(&proj, 30.0f, aspect, 1.0f, 100.0f); - rsgProgramVertexLoadProjectionMatrix(&proj); - - rsgBindProgramFragment(gPFBackground); - rsgBindProgramStore(gPFSBackground); - rsgBindTexture(gPFBackground, 0, gTGrid); - - rs_matrix4x4 matrix; - rsMatrixLoadIdentity(&matrix); - // Position our models on the screen - rsMatrixTranslate(&matrix, gLookAt.x, gLookAt.y, gLookAt.z - gZoom); - rsMatrixRotate(&matrix, gRotateX, 1.0f, 0.0f, 0.0f); - rsMatrixRotate(&matrix, gRotateY, 0.0f, 1.0f, 0.0f); - rsgProgramVertexLoadModelMatrix(&matrix); - - renderAllMeshes(); - - drawDescription(); - - return 10; -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs deleted file mode 100644 index f328025..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#include "transform_def.rsh" - -rs_script transformScript; - -typedef struct { - int changed; - rs_matrix4x4 *mat; -} ParentData; - -static void appendTransformation(int type, float4 data, rs_matrix4x4 *mat) { - rs_matrix4x4 temp; - - switch (type) { - case TRANSFORM_TRANSLATE: - rsMatrixLoadTranslate(&temp, data.x, data.y, data.z); - break; - case TRANSFORM_ROTATE: - rsMatrixLoadRotate(&temp, data.w, data.x, data.y, data.z); - break; - case TRANSFORM_SCALE: - rsMatrixLoadScale(&temp, data.x, data.y, data.z); - break; - } - rsMatrixMultiply(mat, &temp); -} - -void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32_t y) { - - SgTransform *data = (SgTransform *)v_out; - const ParentData *parent = (const ParentData *)usrData; - - //rsDebug("Transform data", (int)data); - //rsDebug("Entering parent", (int)parent); - - rs_matrix4x4 *localMat = &data->localMat; - rs_matrix4x4 *globalMat = &data->globalMat; - - ParentData toChild; - toChild.changed = 0; - toChild.mat = globalMat; - - //rsDebug("Transform is dirty", data->isDirty); - - // Refresh matrices if dirty - if (data->isDirty) { - data->isDirty = 0; - toChild.changed = 1; - - // Reset our local matrix - rsMatrixLoadIdentity(localMat); - - for (int i = 0; i < 16; i ++) { - if (data->transformTypes[i] == TRANSFORM_NONE) { - break; - } - //rsDebug("Transform adding transformation", transformTypes[i]); - appendTransformation(data->transformTypes[i], data->transforms[i], localMat); - } - } - - //rsDebug("Transform checking parent", (int)0); - - if (parent) { - if (parent->changed) { - toChild.changed = 1; - - rsMatrixLoad(globalMat, parent->mat); - rsMatrixMultiply(globalMat, localMat); - } - } else { - rsMatrixLoad(globalMat, localMat); - } - - //rsDebug("Transform calling self with child ", (int)data->children.p); - if (data->children.p) { - rsForEach(transformScript, data->children, data->children, (void*)&toChild); - } -} diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh deleted file mode 100644 index 24a36c1..0000000 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma version(1) - -#pragma rs java_package_name(com.android.modelviewer) - -#define TRANSFORM_NONE 0 -#define TRANSFORM_TRANSLATE 1 -#define TRANSFORM_ROTATE 2 -#define TRANSFORM_SCALE 3 - -typedef struct __attribute__((packed, aligned(4))) SgTransform { - rs_matrix4x4 globalMat; - rs_matrix4x4 localMat; - - float4 transforms[16]; - int transformTypes[16]; - - int isDirty; - - rs_allocation children; - -} SgTransform; |