2016年2月

Vuforia for Unity 添加按钮实现模型放大缩小

具体是将脚本附加到预制件prefab上。

做法如下

将Vuforia for unity 导入到Unity中后,定位到Vuforia提供的预设预制件上。

有如下的预制件:ARCamera、CloudRecognition、CylinderTarget、FrameMarker、ImageTarget、Multitarget、ObjectTarget、TextRecognition、UserDefinedTarget、VirtualButton、Word。

我们这里以ImageTarget预制件来做例子

在Assets中添加一个C#脚本(C# Script),取名为BtnControl,脚本代码下面附加上。

解释下我这个脚本,我这个脚本通过调用GUI.Button()方法,在屏幕上绘制按钮,点击按钮后,可以对模型进行放大以及缩小,脚本写的很粗糙。见谅。

点击预制件ImageTarget,然后在右侧的Inspector上点击Add Component

输入脚本名:BtnControl(注:当你输入的时候,应该会自动联想到这个文件),之后回车

然后就可以开始将预制件拖到Hierarchy上开始使用吧。
BtnControl.cs脚本代码如下

using UnityEngine;
using System.Collections;

public class BtnControl: MonoBehaviour {

    void OnGUI() {
        
        if (GUI.Button(new Rect(10, 50, 200, 50), "放大"))
        {
            Vector3 v3 = transform.localScale;

            transform.localScale = new Vector3(v3.x*1.2f, v3.y*1.2f, v3.z*1.2f);
        }
        if (GUI.Button(new Rect(10, 120, 200, 50), "缩小"))
        {
            Vector3 v3 = transform.localScale;
            transform.localScale = new Vector3(v3.x/1.2f,v3.y/1.2f,v3.z/1.2f);
        }
       
    }
}

Android sdk content loader 进度条0%解决办法

最近在用eclipse的时候,发现打开eclipse后,载入android sdk失败,用eclipse -clean也没效果,果断google寻找其他方案。果然被我找到一个靠谱的。

stackoverflow网站上的小伙伴遇到的问题跟我差不多,只不过人家是用osx系统我是windows,效果是一样的,参看下面的解决办法:

- 阅读剩余部分 -

3ds max 错误提示1603,vc2005安装失败,错误排查

今天在装3ds max 2014的时候,点击安装后提示安装失败,然后点击对应的日志,发现错误是由vc 2005导致的,果断谷歌搜索了下(百度看起来不靠谱的样子),网上有说,要卸载,行,我打开控制面板,把含有vc2005的所有项目都卸载了,然后重新安装,发现还不行(手动QQ表情微笑)

继续搜索,果断看到有人说要在安装目录下的setup.ini文件上动手脚,根据他的说法是,这些都可以去掉,不用安装,于是我打开了安装目录下的setup.ini文件,CTRL+F搜索VCREDIST

定位到了PREREQUISITE=IE;SSE2;VCREDIST2005SP1ATLX86;VCREDIST2005SP1ATLX64;VCREDIST2008SP1X86;VCREDIST2008SP1X64;VCREDIST2010SP1X86;VCREDIST2010SP1X64;DOTNET4;DOTNET4KB2468871;_DOTNET35SP1;DIRECTX;MSXML6;CM;CMILB;CMILM这行,将VCREDIST2005SP1ATLX86;VCREDIST2005SP1ATLX64;移除,重新运行安装程序,可以了!

可以参考下这里哟:http://forums.autodesk.com/t5/installation-licensing/some-products-fail-to-install-result-1603/td-p/3382347

ARToolKit for Android SDK库的结构和开发技术

Section 1.1 库的结构和开发技术

关于

ARToolKit 是在增强现实应用程序开发中使用最广泛的支持库。目前(如2013年),已经被移植在手机上......最重要的是能够在各种硬件和软件平台的智能手机上运行。

这里描述的内容是 ARToolKit 专业版本,包括了ARToolKit for Mobile。Android NDK 进行核心处理,Android SDK 进行简单实现,另外,应用并选择Android NDK的执行。另外,Android 的开发,需要学的知识也有Android NDK,Android SDK,这些都请通过各种书籍进行学习。

此外,ARToolKit for Mobile 需要可以购买一个许可。

ARToolKit for Android SDK组件

大多数的Android应用程序都是用java开发的,Android SDK提供了系统框架,丰富的组件支持。除了这个,你还可以使用Android NDK来调用使用C或者C++开发的代码库。你可以优化这些代码,提高程序运行设备的最大性能。

使用Android NDK的一般方法是建立C / C ++的共享库,包括界面使用JNI的命名方案,使用Android SDK中加载这个库的应用程序,你可以以同样的方式与任何其他方法调用。

通过使用该方法,通过移植ARToolKit,现在有可能在Android运行。

ARToolKit for Android包括C / C ++和两个如下所示的Java组件,以支持Android应用程序的开发。

ARToolKit core modules

这是ARToolKit的核心部分。从图像中检测标记,是一个包含以计算的位置或类似的部分的本地库。

ARToolKitWrapper

    使用C和JNI接口,包括ARToolKit的功能和标记管理,这是C ++的包装库。您可以结合使用与主要有以下ARBaseLib。

ARBaseLib

与ARToolKitWrapper通信的Java库。这个类它将能够方便地访问并使用ARToolKit原生功能。

通过下面这个图像,你应该就了解了各自作用啦。

session01_01.png

Android NDK的一部分,已经提供了编译的包,因此,借助ARBaseLib能开发基本的程序。

下面开始介绍开发方法

开发方法

下面显示了如何创建并使用ARToolKit for Android 的应用程序

  1. 使用Android SDK 如何开发和利用所提供的ARBaseLib,ARToolKitWrpper库
  2. 使用ARToolKitWrpper、Android SDK和NDK 如何开发和创建新的共享库。
  3. 直接使用ARToolKit,最近的、Android NDK 的开发方法

最简单的方法是使用库已经提供的方法

如下所示

section01_02.png

在这种情况下,对于高标记的负荷的图像分析和计算部中的AR检测会更快。上的标记模型显示,将对应的渲染部分上图中或自己使用了Java的OpenGL ES的写,我认为它会被使用的Java之外的书面渲染器,如min3d的NyARToolKit。

在这种情况下,而采取的方法的模型展示,你可能会觉得应用速度很慢。

所以,有一种方法来处理对应于的Android NDK一侧的渲染的部位,此外,如果没有渲染写入到相应的Java,我觉得用C语言编写OpenGL的代码也可以移植在Android NDK使用。

所以,我认为,显示在下面的图中采用的结构,如下所示

section01_03.png

使用ARBaseLib是一样的,但是OpenGL ES的部分使用依赖Android NDK,比起用java处理更容易表现负责的模型的同时,更可能实现利用以C表示的renderer,不过这种方法具有以下缺点,ARToolKit 将检测结果通过SDK导入,传递给NDK,这其中需要可观的时间,会将效率减慢。

    • *

Section 1.1 ライブラリの構造と開発手法

About

ARToolKitは拡張現実感アプリケーションの開発に使用される世界も人気のあるライブラリです。
現在(2011年時点)、特に携帯電話……スマートフォン上で動作させることを重要視し様々なハードウェア及びソフトウェアのプラットフォームに移植されています。

ここで説明しているライブラリは ARToolKit Professinal を Android に移植したバージョンです。
このライブラリは、Android NDKAndroid SDKを用いるライブラリセットになっています。計算コア部分をAndroid NDK、それ以外をAndroid SDKという比較的簡単な実装方法から、全てAndroid NDKで実装する方法などを選択してアプリケーションを開発することになります。
そのため、Androidの開発について、Android SDKのみならずAndroid NDKの知識も必要になる場面があります。
なお、このライブラリはARToolKitのライセンスを購入する事で利用する事ができます。

ARToolKit for Android SDKコンポーネント

AndroidのほとんどのアプリケーションはJavaで開発され、Android SDKはそれをサポートするフレームワーク、豊富なクラスを提供しています。
また、これに加え、ネイティブ C/C++のコードベースのライブラリにアクセスできるAndroid NDKを使用することができます。
これにより、端末の持つパフォーマンスを最大限引き出す必要のある機能のために最適化する事ができます。

Android NDKを用いる一般的なアプローチは、JNIの命名スキームを使用たインターフェースを含むC/C++の共有ライブラリを構築することです。
Android SDKを用いたアプリケーションは、このライブラリをロードし、他のメソッドと同じように呼び出すことができます。

この方式を用いることで、ARToolKitのライブラリを移植することにより、Android上で動作させることが可能になりました。

ARToolKit for Android は、Androidアプリケーションの開発を可能にするために下記に示す C/C++ と Java の両方のコンポーネントが含まれています。

  • ARToolKit core modules
  • ARToolKitのコア部分です。画像からマーカーを検出し、位置などを計算する部分が含まれているネイティブなライブラリです。
  • ARToolKitWrapper
  • CとJNIインターフェースで、ARToolKitの機能やマーカー管理などの機能を含む、C++のラッパーライブラリです。主に下記のARBaseLibとあわせて使用します。
  • ARBaseLib
  • ARToolKitWrapperと通信するJavaのライブラリです。このクラスを使用してARToolKitのネイティブ機能に簡単にアクセスできるようになります。

ARBaseLibを利用したアプリケーションの構造をとても簡単にした図にすると下記のようになります。

ARToolkit for Android 簡易構造図

Android NDK部分については、コンパイル済みのパッケージが提供されています。
そのため、ARBaseLibを活用すれば基本的にJavaのみで開発することが可能です。

次は開発手法について説明します。

開発手法

ARToolKit for Android を使用してアプリケーションを作成する方法を下記に示します。

  1. 提供されているARBaseLib、ARToolKitWrpperのライブラリを使用し、主にAndroid SDKを使用して開発する方法
  2. ARToolKitWrpperを利用した新しい共有ライブラリを作成し、Android SDK、NDKを使用して開発する方法
  3. ARToolKitを直接利用する、ほぼ、Android NDK のみを使用して開発する方法

もっとも簡単な方法は、最初に上げた、提供されているライブラリを使用する方法です。
構造を簡単に図にすると下記のようになります。

ARToolkit for Android 簡易構造図 fig. 2

この場合、ARで負荷の高いマーカー検出のための画像解析や計算部分が高速化されます。
マーカー上のモデル表示、上記の図中のRenderer部分に当たる箇所はJavaのOpenGL ESを用いて独力で書くか、NyARToolKitのようにmin3dなど外部のJavaで書かれたレンダラーを用いることになると思います。

この場合、モデル表示に処理を取られ、アプリケーションが重いと感じることがあるかもしれません。
そこで、Rendererに該当する部分をAndroid NDK側で処理する方法があります。
また、適切なJavaで書かれたRendererがない場合、C言語で書かれたOpenGLのコードをAndroid NDKに移植して使うこともできると思います。

そのため、下記の図のような構造を採用することになると思います。

ARToolkit for Android 簡易構造図 fig. 3

ARBaseLibを使うこところまでは同じですが、OpenGL ESを使用する部分をAndroid NDKに任せています。
これにより、Javaで処理するよりも高度なモデルなどが表示しやすくなると共に、Cで書かれたRendererを利用することが可能になります。
しかし、この方法には欠点があり、ARToolKitで検出した結果をSDKを経由して、NDKに渡し直すという手順を取るため、行ったりきたりする分、遅くなるという現象が発生します。

となると結果的に全てNDKで書けばいいのではないか?ということになり、下記のような構造を採用することになります。

ARToolkit for Android 簡易構造図 fig. 4

メモリ管理さえ出来れば、この方法が最も安定し、書き方によってはiOSアプリと共有できるのでお勧めしたい構成ですが、難易度は一気に高くなります。

開発に必要な要件

このSDKは、Android 2.1以降のデバイスをターゲットとしています。
しかし、JITコンパイラが含まれる Android 2.2 以降が現実的です。
ほぼ全てNDKに押し込めるのであればAndroid 2.3以降ですが、カメラ周りの制御ができないので結果的にAndroid 2.2以降になると思います。

開発環境には、Eclipse、ADT、Android SDK、ネイティブ開発のためのAndroid NDKが必要です。
また、現在、ARToolKit for AndroidはWindows上で開発されているため、WindowsにCygwinが必要になります。

同時に、Android Emulatorはウェブカメラを代用として使うことができないため、Android端末が必須です。

ARToolKit professional for Android 程序开发以及Tips的介绍

译文

本人主要使用Google翻译之后的结果,同时参照了多个翻译软件翻译出来,如有不对,请多指教。

ARToolKit professional for Android

About

ARToolKit 是在增强现实应用程序开发中使用最广泛的支持库。目前(如2013年),已经被移植在手机上......最重要的是能够在各种硬件和软件平台的智能手机上运行。

这里描述的内容是 ARToolKit 专业版本,包括了ARToolKit for Mobile。Android NDK 进行核心处理,Android SDK 进行简单实现,另外,应用并选择Android NDK的执行。另外,Android 的开发,需要学的知识也有Android NDK,Android SDK,这些都请通过各种书籍进行学习。

此外,ARToolKit for Mobile 需要可以购买一个许可。

除了这个许可,对于ARToolkit协会推荐您购买一本书《3Dキャラクターが現実世界に誕生! ARToolKit拡張現実感プログラミング入門(amazon)》用于GPL解答。

这里所描述的内容旨在组装应用。因此,实际上做什么,一些理论术语,出现的变量(矩阵)并没有过多的提及,作为这个补充的话,上面的书籍可能会帮助到您。

在其他方面,建议购买安卓开发的书籍,比如涉及到Android NDK的书籍,推荐这个《Android NDKネイティブプログラミング(amazon)》。

此外,你开始这方面的开发,需要了解相机、使用一个OpenGL ES样本等。否则会遇到一些问题,不知道从何开始。

- 阅读剩余部分 -

为UEditor for typecho 添加阅读更多按钮

使用百度UEditor for TypeCho有一段时间了,一直对这个编辑器缺少的一个功能耿耿于怀,就是More按钮

这个按钮就是类似在wordpress中,点击后会自动添加<!--more-->标签,这样可以省了我去敲这个标签(懒)。

具体做法如下:

新建文件:moreBtn.js文件

文件内容如下:

UE.registerUI('阅读更多',function(editor,uiName){
    //注册按钮执行时的command命令,使用命令默认就会带有回退操作
    editor.registerCommand(uiName,{
        execCommand:function(){
            alert('execCommand:' + uiName)
        }
    });

    //创建一个button
    var btn = new UE.ui.Button({
        //按钮的名字
        name:uiName,
        //提示
        title:uiName,
        //需要添加的额外样式,指定icon图标,这里默认使用一个重复的icon
        cssRules :'background-position: -460px -40px;',
        //点击时执行的命令
        onclick:function () {
            //这里可以不用执行命令,做你自己的操作也可
           //editor.execCommand(uiName);
           editor.execCommand('inserthtml', '<!--more-->');
        }
    });

    //当点到编辑内容上时,按钮要做的状态反射
    editor.addListener('selectionchange', function () {
        var state = editor.queryCommandState(uiName);
        if (state == -1) {
            btn.setDisabled(true);
            btn.setChecked(false);
        } else {
            btn.setDisabled(false);
            btn.setChecked(state);
        }
    });

    //因为你是添加button,所以需要返回这个button
    return btn;
}/*index 指定添加到工具栏上的那个位置,默认时追加到最后,editorId 指定这个UI是那个编辑器实例上的,默认是页面上所有的编辑器都会添加这个按钮*/);

将该文件保存到:你的Typecho目录/usr/plugins/UEditor/ueditor下。

修改/usr/plugins/UEditor下的:Plugin.php文件。

具体为,在函数:render

$js = Typecho_Common::url('UEditor/ueditor/ueditor.all.min.js', $options->pluginUrl);

下面添加:

$moreBtn = Typecho_Common::url('UEditor/ueditor/moreBtn.js',$options->pluginUrl);

echo '<script type="text/javascript" src="'. $configJs. '"></script><script type="text/javascript" src="'. $js. '"></script>';

后面添加

echo '<script type="text/javascript" src="'. $moreBtn. '"></script>';

刷新页面即可。

按钮会自动添加在最后一个哟。

- 阅读剩余部分 -

TypeCho缩略名自动生成插件

之前一直在用ShingChi写的AutoSlug插件,就是TypeCho下自动生成缩略名的插件

最近想写点什么,发现不能自动生成缩略名了,原来百度已经将翻译服务器放在了http://api.fanyi.baidu.com/api/trans/product/index

而作者似乎也没有意识到这个情况,所以只能自己动手啦。现在将修改完成的放上来,大家自行下载,下载 地址在文章最末尾,因为我比较懒,代码是参考的百度翻译开放平台上的php demo的,所以丑了点,将就下吧。

另外各位需要自己去申请下APPID以及获取到密钥才行哟!

主要修改的地方是Plus.php,添加了appID,appPWD。

- 阅读剩余部分 -