android 3D 游戏实现之静止岩石(3DS)

Unity3D模拟钓鱼游戏开发:物理、AI与渲染技术实践 在游戏开发领域,物理模拟、人工智能(AI)与实时渲染是构建沉浸式体验的三大核心技术支柱。物理引擎通过模拟刚体、柔体与流体交互,为游戏世界提供真实感基础;AI系统赋予非玩家角色(NPC)智能行为,驱动动态的游戏互动;而现代渲染管线则负责将这一切以视觉化的方式呈现。这些技术的融合,在模拟经营与休闲游戏类型中展现出极高的应用价值,能够创造出既富有策略深度又具备视觉吸引力的作品。以模拟钓鱼游戏为例,开发者需要综合运用基于弹簧质点系统的鱼线物理模拟、基于效用AI(Utility AI)的鱼类行为决策,以及通用渲染管线 阅读详情

今天这篇文章将会说明如何利用JPCT-AE框架来实现3DS的载入及为它铺纹理

首先还是说明,它是如此的简单(当然是了解之后),与载入MD2不同的是,如果载入一个3DS文件它是没有动画效果的,所以"android 3D 游戏实现之人物行走(MD2)"中的doAnim()方法在这里就没有了。其它都差不多一样了。

好,下面以实例来说明

 

(1)LoadModels类就不多说了,如果不明白,可以参看前面所有的Opengl es程序的源代码,在那里你会找到一个满意的答案。

 

package sim.feel;

 

import java.io.IOException;

import java.io.InputStream;

 

import android.app.Activity;

import android.content.res.AssetManager;

import android.content.res.Resources;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.opengl.GLSurfaceView;

import android.os.Bundle;

 

public class LoadModels extends Activity {

private GLSurfaceView glView;

private MyRenderer mr;

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 加载图片

LoadImage.loadi(getResources());

// 加载文件

new LoadAssets(getResources());

glView = new GLSurfaceView(this);

mr = new MyRenderer();

glView.setRenderer(mr);

setContentView(glView);

}

}

 

// 载入纹理图片

class LoadImage {

public static Bitmap bitmap;

 

public static void loadi(Resources res) {

bitmap = BitmapFactory.decodeResource(res, R.drawable.rock);

}

}

 

// 载入Assets文件夹下的文件

class LoadAssets {

public static Resources res;

 

public LoadAssets(Resources resources) {

res = resources;

}

 

public static InputStream loadf(String fileName) {

AssetManager am = LoadAssets.res.getAssets();

try {

return am.open(fileName, AssetManager.ACCESS_UNKNOWN);

} catch (IOException e) {

return null;

}

}

}


 

(2)MyRenderer类是我们核心,注释的很清楚了,下面是我们的源代码
package sim.feel;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView.Renderer;
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.Loader;
import com.threed.jpct.Matrix;
import com.threed.jpct.Object3D;
import com.threed.jpct.RGBColor;
import com.threed.jpct.SimpleVector;
import com.threed.jpct.Texture;
import com.threed.jpct.TextureManager;
import com.threed.jpct.World;
public class MyRenderer implements Renderer {
// 纹理数组
private String[] textures = { "rock" };
// scale
private int thingScale = 1;
// world对象
private World world;
// FrameBuffer对象
private FrameBuffer fb;
// Object3D
private Object3D thing;
public void onDrawFrame(GL10 gl) {
// 以黑色清除整个屏幕
fb.clear(RGBColor.BLACK);
// 对所有多边形进行变换及灯光操作
world.renderScene(fb);
// 绘制已经由renderScene产生的fb
world.draw(fb);
// 渲染显示图像
fb.display();
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
if (fb != null) {
fb = null;
}
fb = new FrameBuffer(gl, width, height);
}
public void onSurfaceCreated(GL10 gl, EGLConfig arg1) {
world = new World();
// 设置环境光
world.setAmbientLight(150, 150, 150);
// 循环将已存在Texture以新的名字存入TextureManager中
for (int i = 0; i < textures.length; i++) {
TextureManager.getInstance().addTexture(textures[i],
new Texture(LoadImage.bitmap));
}
thing = loadModel("rock.3ds", thingScale);
// 为Object3D对象设置纹理
thing.setTexture(textures[0]);
// 渲染绘制前进行的操作
thing.build();
// 将thing添加Object3D对象中
world.addObject(thing);
// 调整坐标系
world.getCamera().setPosition(5, 0, -5);
// 在world中应用刚设置好了的坐标系
world.getCamera().lookAt(thing.getTransformedCenter());
}
// 载入模型
private Object3D loadModel(String filename, float scale) {
// 将载入的3ds文件保存到model数组中
Object3D[] model = Loader.load3DS(LoadAssets.loadf(filename), scale);
// 取第一个3ds文件
Object3D o3d = new Object3D(0);
// 临时变量temp
Object3D temp = null;
// 遍历model数组
for (int i = 0; i < model.length; i++) {
// 给temp赋予model数组中的某一个
temp = model[i];
// 设置temp的中心为 origin (0,0,0)
temp.setCenter(SimpleVector.ORIGIN);
// 沿x轴旋转坐标系到正常的坐标系(jpct-ae的坐标中的y,z是反的)
temp.rotateX((float) (-.5 * Math.PI));
// 使用旋转矩阵指定此对象旋转网格的原始数据
temp.rotateMesh();
// new 一个矩阵来作为旋转矩阵
temp.setRotationMatrix(new Matrix());
// 合并o3d与temp
o3d = Object3D.mergeObjects(o3d, temp);
// 主要是为了从桌面版JPCT到android版的移徝(桌面版此处为o3d.build())
o3d.compile();
}
// 返回o3d对象
return o3d;
}
}

 
运行效果:

 

jpct_ae 安卓创建3d视图效果 jpct的基本使用 简单介绍下jpct的基本用法 阅读详情

相关推荐

次世代3D游戏角色的制作流程

通常一个3D游戏角色的制作流程分为概念设定、模型搭建、贴图烘焙、骨骼蒙皮、动画制作和引擎测试六个步骤,涉及到的岗位有原画师、模型师、动画师等。整个制作周期30到45天。 对于策划来说,了解美术工作流程对规范美术需求文档,有效减少和美术的沟通成本十分必要。 本文就来简单讲述下游戏角色的制作过程,希望能让大家对游戏制作有更深的了解。 一、概念设定(原画) 概念设定的主要工作是做游戏世界观的视觉化表现工作,概念设定师根据策划的文案,设计出整个游戏的美术方案,包括角色设定、场景设计、怪物、道具、载具..

langgesanshiyi的博客 1116

Android3D编程之导入3dsMd2模型

提要 3d模型的导入是游戏开发中比较基础的部分了,这里通过jpct这个游戏引擎来加载的,实现起来比较简单。 jpct简介 jPCT是一款基于OpenGL技术开发的3D图形引擎(PC环境为标准OpenGL,Android为OpenGL ES), 以Java语言为基础的,拥有功能强大的Java 3D解决方案。该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC...

weixin_33806509的博客 291

Android下的stl读取3D显示

Android下的3D显示,STL格式文件读取显示。 功能: 1、读取STL格式文件,并显示,3D效果 2、触屏交互,可以自由放缩、旋转、平移物体。 使用: 打开软件后,点击菜单或者屏幕,选择一个stl文件即可。 博客:http://blog.csdn.net/itas109 QQ技术交流群:129518033 商务合作: healsee2015@163.com itas109@qq.com

Android 3D 魔方游戏的设计与开发

Cube 类继承于 Shape 类, Shape 类有一个 addVertex和 addFace 的方法, Cube 类继承了这两个方法,在生成每一个小立方的过程中,同时保存顶点和面及索引的数据,然后给魔方的每个面上色,最后通过 addShape方法将这 27 个小立方体添加到世界场景中,并创建魔方的 9 个层及分配每一层的小立方体,这时就得到了生成整个魔方所需要的所有数据。具体的还原方法为层先法。根据旋转轴的不同,生成不同的矩阵,然后将生成的矩阵与点的坐标相乘得到另一个坐标,该坐标即为旋转后的新坐标。

科大云炬 993

jpct-ae 绘制的桌子(Android 3D)

使用JPCT-AE游戏引擎画的一个桌子(Android 3D),关注我的博客http://blog.csdn.net/itde1/article/details/7548173。里面有讲解。

基于Android的3D游戏开发——国际象棋.zip

源码参考,欢迎下载

安卓 3D 游戏开发入门指南(一)

Android 操作系统是一种广泛应用于手机和平板电脑的操作系统。它甚至被用在一个叫做 Ouya 的视频游戏控制台上。Android 手机从需要合同的昂贵手机到不需要任何合同的廉价预付费手机。为 Android 平台开发程序不需要任何开发者费用,不像苹果移动设备需要年费才能在他们的设备上运行你的程序。一部可以使用 OpenGL ES 2.0 开发 3D 游戏的性能良好的预付费非合约 Android 手机可以在Amazon.com上买到,价格低至 75-100 美元,免运费。本节讨论 Android SDK。

龙哥盟 4277

SuperPoint+SuperGlue在HLoc中的实战效果对比:5大公开数据集测试报告

本文在HLoc框架下,对传统SIFT与深度学习组合SuperPoint+SuperGlue在五大公开数据集上的视觉定位效果进行了实战对比测试。报告详细分析了两种方案在Aachen Day-Night、RobotCar Seasons等不同光照、季节及场景下的表现,揭示了SuperPoint+SuperGlue在应对剧烈光照变化和长期外观变化时的显著优势,并提供了基于HLoc模块化设计的选型与配置策略。

weixin_29093169的博客 425

android人脸建模软件,AI人工智能+面部照片3D建模,3D版捏脸美颜软件羽迹试试成功面世...

近日,羽迹科技在市面推出了一款3D美颜软件——羽迹试试,利用AI技术将2D的人脸照片快速生成对应的3D人脸模型,无需任何辅助设备即可在手机端生成3D人脸模型,并在此基础上可以进行模拟整形的应用场景。这种技术的精准度和响应速度已经在医美市场引起广泛的关注。羽迹试试官方网站可以直接在线体验,用户根据要求拍照上传后几秒钟即可完成自身的模型创建,随后就可以进行捏脸和模拟整形等操作。羽迹试试官网图与以往的2...

weixin_36336411的博客 5503

零差云控关节模组:EtherCAT+preempt-RT实现微秒级同步

关节模组是协作机器人、外骨骼与高精度服务机器人的核心执行单元,其性能瓶颈常在于多轴运动的时序一致性与实时闭环能力。实现‘零差’同步依赖于确定性通信(如EtherCAT)与硬实时操作系统支持(如Linux preempt-RT),前者保障指令与状态在微秒级时间戳下全局对齐,后者消除内核调度抖动,使PID控制、电流采样、编码器反馈等关键路径具备纳秒级可预测性。技术价值体现在相位偏差<±0.01°、端到端控制周期稳定1ms、连续运行温漂<±1.2℃等工程指标,广泛应用于力控装配、康复训练、远程遥操作等对动态精度与

weixin_34192816的博客 1197

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9916

Unity性能优化:深度解析Drawcall原理与实战优化策略

在计算机图形学中,渲染管线是实时图形应用的核心架构,它定义了从3D场景数据到最终屏幕像素的完整处理流程。其核心原理在于CPU与GPU的协同工作:CPU负责准备渲染指令与数据,GPU则专注于并行计算与像素绘制。这一分工的技术价值在于充分发挥不同处理器的优势,实现高效的图形渲染。然而,当CPU需要频繁向GPU发起绘制命令(即Drawcall)时,便可能成为主要的性能瓶颈,导致CPU过载而GPU闲置。在游戏开发、尤其是移动端和VR等资源受限的应用场景中,过高的Drawcall会直接导致帧率下降和卡顿。因此,掌握合

weixin_30614109的博客 296

Linux Component概述和高通component的使用

为了让subsystem按照一定顺序初始化设备才提出来的。subsystem中由很多设备模块,内核加载这些模块的时间不确定。子系统内有些模块是需要依赖其它模块先初始化才能进行自己初始化工作(例如v4l2 subdev和v4l2 video device),这时就要用到component框架。例如v4l2 subdev和v4l2 video device中,谁依赖谁先创建?

lz_1990的专栏 1609

android 3D 游戏实现之人物行走(MD2)

如果充分理解了HelloWorld(见android 3D 游戏实现之First step),了解了一些JPCT-AE游戏框架的机制, 那么,这个示例可以是进阶篇了,其实用JPCT-AE加载3DS,MD2文件都很简单了,主要是掌握一些基本的操作, 今天我先把怎么实现加载MD2文件的代码附上,明天我再传上如果实现载入3DS及3DS KeyFrame动画的代码附上。         此程序所需

Simdanfeg的专栏 9691

C#+Winform+OpenCvSharp实战:5步搞定工业视觉检测框架(附源码下载)

本文详细介绍了如何使用C#、Winform和OpenCvSharp构建工业视觉检测框架,通过5个关键步骤实现高效、稳定的视觉检测系统。内容涵盖环境配置、相机集成、核心算法实现、系统集成与通信,以及部署优化,帮助开发者快速掌握工业视觉检测技术,提升检测精度和效率。附完整源码下载,助力工业数字化转型。

pz89012345的博客 550

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

使用STARTER V5.6软件将项目文件下载到S120驱动器控制单元CF卡中的具体方法演示

Robot_PLC_HMI_Automation 1912

android下导入3ds文件解决方法

网上可以搜索到很多的引擎,通过jpct—ae的引擎可以很快的解决问题,具体的代码可以参考官方的demo。

wsclovezlq的专栏 4266

YOLOv8高级应用实战:多目标跟踪+实例分割+小样本检测(工业/安防场景落地指南)

安防监控中,需要跟踪多个行人的运动轨迹,而不只是框出“这是行人”;工业质检时,要精确分割出零件的缺陷区域(像素级),而不是只给一个粗略的矩形框;罕见场景下(如特殊故障检测、稀有动物识别),只能收集到几十张样本,普通训练方法精度惨不忍睹。我在落地工业安防和质检项目时,把YOLOv8的高级功能摸了个遍,踩过“多目标跟踪遮挡丢帧”“实例分割边缘模糊”“小样本检测过拟合”等一系列坑,最终总结出这套可直接复用的实战方案。多目标跟踪(ByteTrack)、实例分割、小样本检测。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 750

Android游戏引擎----转自优快云(备份用)

很多初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,一边自暴自弃的抱怨Android平台游戏开发难度太高,又连个像样的游 戏引擎也没有,甚至误以为使用Java语言开发游戏是一件费力不讨好且没有出路的事情。事实上,这种想法完全是没有必要且不符合实际的,作为能和苹果iOS分庭抗礼的Android(各种意义上),当然也会有相当数量的游戏引擎存在。仅仅因

kenshintang1215的专栏 1516

SpringCloud Alibaba - Seata 实现高可用和异地容灾

这里不仅仅要实现高可用,还需要实现异地容灾. 异地容灾就是说,如果你整了好几个节点部署起来,全部放到一个机房里面,那么如果这个机房出了故障,就意味着整个集群就完了,所以对于一个大型的集群来讲,都会把这些服务异地部署.问题2:如果我们要实现异地容灾,也就说某一个机房挂了,需要快速的切换到另一个可用的机房,但是这个配置在配置文件中写死了,如果要改配置文件,还需要重启服务器,这是我们不希望看到的,怎么办?进入 seata/bin 目录,运行 seata-server.bat 文件,默认端口为 8091。

CYK_byte的博客 974

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android OpenGL显示任意3D模型文件

前面两篇文章我们介绍了OpenGL相关的基本知识,现在我们已经会绘制基本的图案了,但是还远远不能满足我们的需求。我们要做的是显示任意的模型,这也是本文所要做的事情。在阅读本文之前,请先确保你已经看过我前面两篇文章

huachao1001的专栏 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 人物行走动画,android 3D 游戏实现之人物行走(MD2)

如果充分理解了HelloWorld(见android 3D 游戏实现之First step),了解了一些JPCT-AE游戏框架的机制,那么,这个示例可以是进阶篇了,其实用JPCT-AE加载3DS,MD2文件都很简单了,主要是掌握一些基本的操作,今天我先把怎么实现加载MD2文件的代码附上,明天我再传上如果实现载入3DS及3DS KeyFrame动画的代码附上。此程序所需的纹理贴图及MD2文件请从ht...

weixin_35747299的博客 636

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上百个Android开源项目分享

上百个Android开源项目分享,希望对android开发有帮助。   Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/develop Android电池监控 Android Batte

专注移动 2399

android 3d 游戏,盘点Android平台十款画面最强3D游戏

Android平台的发展非常迅猛,系统版本从2.1、2.2一路飙升至2.3,各种手机与平板设备也层出不穷。 与此相对的当然就是应用软件的大爆发,根据AndroLib日前所公布的数字,Android Market目前已经拥有超过二十万个应用。而无数优秀的游戏作品也被移植或登陆Android平台。今天笔者就以一名游戏宅的身份为大家盘点一下笔者心目中Android平台最为出色的十款3D游戏吧:一、《地牢...

weixin_28716217的博客 764

JPCT-AE for Android 3D (二)----------为立方体各面贴上不同的纹理

Primitives.getCube(10)虽然能够很方便的创建立方体,但是其支持的纹理映射方式还比较单一。下面将介绍一下如何自己创建立方体并为立方体的各个面都贴上不同的问题了。 这里我们使用上一篇文章中的代码,在CBoxRander中加入如下两个函数: // 创建纹理 private void CreateTextures() { Texture texture = new Textu

LeoY的专栏 3878

Unity3D安卓开发优化_强制控制分辨率

Unity3D安卓开发优化_强制控制分辨率 目前学习应用性能优化最直接的方法就是降低分辨率。 一般3D场景在电脑运行没问题,一进手机就卡成放PPT了。 针对特定设备可以限制分辨率。 性能优化有很多方面,这次主要是分辨率,很简单,一句代码 Screen.SetResolution(high,width,true); 这里有一个要...

weixin_30576827的博客 1316
上一篇: android 3D 游戏实现之人物行走(MD2)
下一篇: android 3D 游戏实现之简单碰撞检测
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值