Я довольно новичок в разработке Android, я знаю основные действия, карты, sqlite и т. Д. Я хотел бы иметь возможность реализовать некоторые 3D-объекты возможность взаимодействия с моими приложениями. После небольшого поиска я обнаружил, что rajawali кажется лучшим методом. Как и вы, я начал с первого учебника и прочитал исходный код из примера docs. Где я потерялся, я последовал за учебным словом, и я не могу запустить приложение из-за ошибок в скрипте. Если кто-то использовал Раджавали, прежде чем я подниму некоторые указания относительно того, где я поступил неправильно. (учебник был обновлен 2 месяца назад, поэтому его довольно недавно). TutorialКак вы получаете rajawali для работы (учебник 1 по git)
Вот мой исходный код
MainActivity:
package rajawali.tutorials;
import rajawali.RajawaliActivity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends RajawaliActivity {
private Renderer mRenderer;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mRenderer = new Renderer(this);
mRenderer.setSurfaceView(mSurfaceView);
super.setRenderer(mRenderer);
}
}
Renderer:
package rajawali.tutorials;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import rajawali.lights.DirectionalLight;
import rajawali.materials.textures.ATexture.TextureException;
import rajawali.materials.textures.Texture;
import rajawali.primitives.Sphere;
import rajawali.renderer.RajawaliRenderer;
public class Renderer extends RajawaliRenderer {
private DirectionalLight mLight;
Sphere mSphere;
public Renderer(Context context) {
super(context);
setFrameRate(60);
}
public void initScene() {
mLight = new DirectionalLight(1f, 0.2f, -1.0f);
mLight.setColor(1.0f, 1.0f, 1.0f);
mLight.setPower(2);
try {
*DiffuseMaterial* material = new *DiffuseMaterial*(); //there is an error here (DiffuseMaterial cannot be rsolved as a type)
material.addTexture(new *Texture(R.drawable.earthtruecolor_nasa_big)*); //here (constructor Texture(int) cannot be defined)
mSphere = new Sphere(1, 24, 24);
mSphere.setMaterial(material);
mSphere.*addLight(mLight)*; //and here (The method addLight(DirectionalLight) is undefined for the type Sphere)
addChild(mSphere);
} catch (TextureException e) {
e.printStackTrace();
}
getCurrentCamera().setZ(4.2f);
}
@Override
public void onDrawFrame(GL10 glUnused) {
super.onDrawFrame(glUnused);
mSphere.setRotY(mSphere.getRotY() + 1);
}
}
Я реально не хочу быть код подачи ложка, если я могу помочь ему, но его что ошибка находится в «DiffuseMaterial». Почему это или есть лучший способ манипулирования 3D-объектами, кроме использования min3D или Rajawali?
Это потрясающе спасибо. Интересно, почему учебник не работает. Остальные учебники похожи на это? –
Не уверен, я не пытался сделать еще один учебник, но, похоже, учебник был сделан для предыдущей версии rajawali. – doanvelagui
super.addChild больше не работает. 'getCurrentScene(). addChild' действительно работает. – nunespascal