‘壹’ ios开发 scenekit导入模型后怎么让模型动起来
ios8之后苹果推出了一个3D模型渲染框架。SceneKit。但是国内针对这方面的教程并不是很多。前两天搞了一下也是一头雾水,终于把最基础的内容搞明白了之后,写下这篇随笔作为cnblogs的开篇,希望能一直写下去。
SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过。这篇文章只针对.dae模型写。
首先如果是希望加载一个已有的,不需要程序在运行的时候动态添加的dae模型。那么我们可以直接新建一个game类型的工程。在选项中选择SceneKit,在程序中加载自带模型的那句话中将模型名称替换即可。本文主要讲一下如何导出dae模型,并在server端动态下载并显示。
首先我们手中有一个.stl或者其他的模型文件,将模型文件转换成.dae文件我使用Blender。
(1)在Blender中新建场景
(2)在右上侧栏中将自动生成的Cube、Camera等3个物体删掉
(3)导入我们已有的模型文件
(4)调整我们的模型文件的方向、大小
(5)在右上侧栏更改模型文件及子文件的名字为你要导出的dae文件的名字(这一步很重要!)
(6)在左侧栏中Edit Options中点击Smooth
(7)File->export->dae
(8)在接下来的页面中,我们选择导出的位置和文件的名字,并且在左侧选项Texture中选择include material texture(同样重要!)
接下来我们在桌面上新建一个文件夹,暂时起名为model,更改后缀为.scnassets,将我们生成好的模型文件拷贝进去。SceneKit对于动态添加文件夹写了两个脚本。不太清楚作用原理是什么,以后再研究吧。暂时知道怎么用就行。将SceneKitAssets、scntool文件拷贝到model.scnassets所在的目录下,进入终端并cd到该目录下,运行
1 ./SceneKitAssets model.scnassets -o model-o.scnassets
如果终端没有报错,并且生成了model-o.scnassets,则代表运行成功。
接下来我们把生成的model-o.scnassets文件打包成zip文件,目的是为了能让iPhone客户端下载的时候文件更小。
打包好了之后上传至服务器即可。
两个可执行文件下载链接 http://download.csdn.net/detail/u013588047/8937773
接下来是重头戏,如何在程序中下载,解压,并显示呢。
下载解压我使用了两个开源框架 AFNetworking 和 SSZipArchive ,朋友们可以自行查阅使用方法。
一步一步来,先是下载,解压
1 - (void)downloadZip {
2
3 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
4 AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
5 //这里我们用本地链接替代一下,可以使用任意url链接
6 NSURL *URL = [NSURL URLWithString:@"file:///User/name/Desktop/model.scnassets.zip"];
7 NSURLRequest *request = [NSURLRequest requestWithURL:URL];
8
9 NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
10 NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
11 return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
12 } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
13 NSLog(@"File downloaded to: %@", filePath);
14
15 //对文件解压
16 NSArray *paths = (NSDocumentDirectory, NSUserDomainMask, YES);
17 NSString *documentsDirectory = [paths objectAtIndex:0];
18 NSString *inputPath = [documentsDirectory :@"/proct-1-optimized.scnassets.zip"];
19
20 NSError *zipError = nil;
21
22 [SSZipArchive unzipFileAtPath:inputPath toDestination:documentsDirectory overwrite:YES password:nil error:&zipError];
23
24 if( zipError ){
25 NSLog(@"[GameVC] Something went wrong while unzipping: %@", zipError.debugDescription);
26 }else {
27 NSLog(@"[GameVC] Archive unzipped successfully");
28 [self startScene];
29 }
30
31 }];
32 [downloadTask resume];
33 }
而对于3d模型场景的创建,我们使用SCNSceneSource,代码如下
1 NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
2//这里的dae文件名字是我们导出时定义的文件名,下面一段代码中加载的SCNNode是我们之前在面板中改过的模型名
3 documentsDirectoryURL = [documentsDirectoryURL URLByAppendingPathComponent:@"model.scnassets/cube.dae"];
4
5 SCNSceneSource *sceneSource = [SCNSceneSource sceneSourceWithURL:documentsDirectoryURL options:nil];
然后我们加载.dae文件中的模型,作为一个SCNNode,名字为我们在一开始改过的模型名
1 SCNNode *theCube = [sceneSource entryWithIdentifier:@"Cube" withClass:[SCNNode class]];
最后我们设置一下灯光等效果,其实是新建game文件中设置好了的,我们要做的是将SCNNode *theCube加载到Scene中
// Create a new scene
SCNScene *scene = [SCNScene scene];
// create and add a camera to the scene
SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
[scene.rootNode addChildNode:cameraNode];
// place the camera
cameraNode.position = SCNVector3Make(0, 0, 15);
// create and add a light to the scene
SCNNode *lightNode = [SCNNode node];
lightNode.light = [SCNLight light];
lightNode.light.type = SCNLightTypeOmni;
lightNode.position = SCNVector3Make(0, 10, 10);
[scene.rootNode addChildNode:lightNode];
// create and add an ambient light to the scene
SCNNode *ambientLightNode = [SCNNode node];
ambientLightNode.light = [SCNLight light];
ambientLightNode.light.type = SCNLightTypeAmbient;
ambientLightNode.light.color = [UIColor darkGrayColor];
[scene.rootNode addChildNode:ambientLightNode];
// Add our cube to the scene
[scene.rootNode addChildNode:theCube];
// retrieve the SCNView
SCNView *scnView = (SCNView *)self.view;
// set the scene to the view
scnView.scene = scene;
// allows the user to manipulate the camera
scnView.allowsCameraControl = YES;
// show statistics such as fps and timing information
scnView.showsStatistics = YES;
// configure the view
scnView.backgroundColor = [UIColor blackColor];
这样我们就可以动态下载一个dae文件并显示了。
‘贰’ 仙剑4绿色免完整安装硬盘解压版 scenedata.cpk文件
兄台,本人已发送,请注意查收。
‘叁’ 怎么打开3ds max scene文件
3dsmax7简体中文正式版完美激活步骤如下:
1、用序列号445-45190928进行安装。
2、安装完后,删除C:\Documents and Settings\All Users\Application Data\Autodesk\Software Licenses文件夹下的B2A7B000.dat(注意:要看到这个目录和文件,需要开启文件夹选项中的显示所有文件和隐藏系统文件选项。
3、用adlmdll.dll覆盖3dsmax7安装目录下的同名文件。
4、运行3dsmax7,这时会要求你激活,记下申请码(共8组)后,运行注册机Keygen.exe,在“Activate Code:”中输入刚才的申请码,按下最下面的“Generate”按纽,就可以得到激活码(共5组)。
5、返回3dsmax7激活界面,选择“输入激活码(拥有激活码)”,按“下一步”,在“选择国家或地区”中选“China”,输入刚才生成的5组激活码,按“下一步”,完成注册。
‘肆’ 求助 SceneManager问题
1.1. 配置mirrorlist 其实mirrorlist的配置是在基本系统安装中完成的,但这一步比较重要,要打的字也比较多,于是单独列出. mirrorlist文件绝对路径:/etc/pacman.d/mirrorlist 编辑方法:删除或注释文件中的所有内容,然后向其中加入如下文字: Server = http://mir.archlinux.fr/$repo/os/i686 可将上面的内容多重复几次,这样便可在出现链接超时等特殊情况时自动重启链接(vi中使用yy,p命令即可). 1.2 更新系统 # pacman -Syu 1.3 处理系统音频 安装alsa-utils # pacman -S alsa-utils 运行alsaconf按提示设置好声卡选项. 然后编辑/etc/rc.conf将alsa加至系统DAEMON中,这一步一定要做,否则系统所做的音频设置将不能生效,每次开机后都是静音状态,会相当的烦. 1.4 处理系统视频 安装xorg和mesa,其中mesa为OpenGL的克隆,用于处理3D应用. # pacman -S xorg mesa 然后为自己的显卡安装相应的显卡驱动,例如我使用intel集成显卡,则: # pacman -S xf86-video-intel 相应的,nv的显卡则安装xf86-video-nv, ati的显卡则安装xf86-video-ati或是xf86-video-readonhd,详情请GOOGLE. 1.5 安装fam 启动x前,先启动fam,否则鼠标键盘都会不可用,进入死循环. # pacman -S fam 编辑/etc/rc.conf,将hal, fam 加入DAEMON中,注意二者的顺序,此时可重启计算机,至此我们已经得到了一个干净的基本系统. 1.6 安装rar等解压工具: # pacman -S unrar unzip p7zip 1.7 安装字体 安装英文字体,这里我们选择ttf-dejavu,当然你也可以选择自己喜欢的英文字体 # pacman -S ttf-dejavu 然后再安装中文字体,一般都选用微软雅黑,我使用手工方法安装字体,具体安装步聚如下: 下载雅黑字体文件,如:yahei.rar # unrar x yahei # mkdir /usr/share/fonts/yahei # cp *.ttf /usr/share/fonts/yahei/ # cd /usr/share/fonts/yahei/ # mkfontscale # mkfontdir # fc-cache -fv 1.8 安装桌面系统 KDE系统尚且达不到办公应用水平,我们这里选择GNOME: # pacman -S gnome 1.9 安装必需桌面工具 # pacman -S gnome-terminal gdm gnome-utils evince file-roller gedit gcalctool gthumb empathy telepathy-butterfly telepathy-gabble gnome-power-manager 1.10 安装音视频工具及解码包 # pacman -S smplayer flashplugin codecs 1.11 安装办公工具 # pacman -S jre openoffice-base openoffice-zh-CN 1.12 安装NTFS读写工具 # pacman -S ntfs-3g ntfsprogs 1.13 安装FTP服务器端 # pacman -S vsftpd 修改/etc/vsftpd.conf文件: 注释掉anonymous_enable=YES一行 解注释 #local_enable=YES #write_enable=YES 两行,若需自动运行,可将vsftpd加入DAEMON 1.14 安装sudo工具 # pacman -S sudo add "chinsung ALL=(ALL) ALL" to /etc/sudoers add "complete -cf sudo" to /home/USER_NAME/.bashrc 1.15 安装蓝牙工具 # pacman -S blueman 修改/etc/rc.conf文件,如需自动启动,可将bluetooth加入DAEMONS项. 1.16 安装vim # pacman -S vim 详细配置请GOOGLE,下面这两项应是最基本的: set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1 syntax on 前一句用于编码自适应,后一句用于打开代码自动着色.将上面两句放到/etc/vimrc文件即可. 1.17 安装nfs服务 pacman -S nfs-utils 将nfs-server加入/etc/rc.conf中的daemon项. 修改/etc/exports,在其中加入: /home/chinsung/workspace/test 192.168.0.0/255.255.255.0(rw,no_root_squash,sync) 即共享本机上的/home/chinsun
‘伍’ 如何解开和打包ELF文件
详细用法贴里的readme文件内有,简单用法:1.将ps2-packer(exe及相关文件)、ps2-unpacker(exe及相关文件)和要处理的elf文件放到一个文件夹中2.进入命令行模式3.进入第一步的目录4.压缩elf
:
ps2-packer
原始elf文件名
新elf文件名5.解压elf
:
ps2-unpacker
压缩elf文件名
新文件名
‘陆’ School Days HQ cross day 解压密码
这个资源我没有下,所以我也不知道,你可以去你下种子的那个帖子里查一查,或者通过论坛账号直接问发种子的人。如果这些你都找不到,那就下别的资源吧。
另:你下的这三个游戏除了summer days第一话有汉化,剩下的都没有汉化。如果你不会日语并且想看剧情的话,还是不要下好了。如果只是想看看H scene的话,直接去搜搜summer days H scene就好了。school days的07年版有6.0测试版汉化,剧情和HQ基本一样
‘柒’ 大话西游2安装时的错误,求高手!
正在解压 item.wdf
正在解压 libs\fastdown.zip
正在解压 libs\python23.dll
正在解压 libs\select.pyd
正在解压 libs\zlib.pyd
正在解压 libs\_socket.pyd
正在解压 libs\_sre.pyd
正在解压 libs\map.pyd
正在解压 newscene\0038.map
正在解压 newscene\1124.map
正在解压 newscene\1295.map
正在解压 newscene\1386.map
正在解压 music.wdf
正在解压 xy2replay.bat
正在解压 addon.wdf
正在解压 几点建议.txt
正在解压 goods.wdf
正在解压 eggcore.dll
正在解压 egglib.dll
正在解压 新人问题集.txt
正在解压 magic.wdf
magic.wdf CRC 失败。
正在解压 info.wdf
正在解压 shape.wd2
正在解压 shape.wd1
正在解压 shape.wdf
shape.wdf CRC 失败。
正在解压 健康游戏忠告.txt
正在解压 card.wdf
正在解压 shape.wd3
shape.wd3 CRC 失败。
正在解压 shape.wd4
shape.wd4 CRC 失败。
正在解压 effect.wdf
正在解压 XY2Update.exe
正在解压 7za.dll
正在解压 pimage75.wdf
正在解压 windsoul75.dll
正在解压 wsaddon75.dll
正在解压 wsound75.dll
正在解压 xy2-75.exe
正在解压 wsound.dll
正在解压 scene\0001.map
正在解压 scene\0037.map
正在解压 scene\1001.map
scene\1001.map CRC 失败。
正在解压 scene\1004.map
scene\1004.map CRC 失败。
scene\1070.map CRC 失败。
scene\1091.map CRC 失败。
文件"???"头损坏
‘捌’ Scene It Twilight的安装
你下载的游戏少组件
去下个补丁
要不就重新下载,再安装