來源:http://w3c.github.io/deviceorientation/spec-source-orientation.html
其實似乎直接用四元素的公式就可以使用了,但因為實作上需要對應實際地標方向,需要做一些旋轉,在測試期間換成矩陣去儲存,後來就沒有改回四元素。
var alpha = 0;
var beta = 0;
var gamma = 0;
var gyroscopeQuaternion = new THREE.Quaternion();
gyroscopeQuaternion.setFromEuler(new THREE.Euler(0,0,0));
if (window.DeviceMotionEvent==undefined) {
}
else {
window.ondeviceorientation = function(event) {
alpha = event.alpha;
beta = event.beta;
gamma = event.gamma;
}
setInterval(function() {
var _x = beta ? beta * degtorad : 0; // beta value
var _y = gamma ? gamma * degtorad : 0; // gamma value
var _z = alpha ? alpha * degtorad : 0; // alpha value
var cX = Math.cos( _x );
var cY = Math.cos( _y );
var cZ = Math.cos( _z );
var sX = Math.sin( _x );
var sY = Math.sin( _y );
var sZ = Math.sin( _z );
//
// ZXY rotation matrix construction.
//
var m11 = cZ * cY - sZ * sX * sY;
var m12 = - cX * sZ;
var m13 = cY * sZ * sX + cZ * sY;
var m21 = cY * sZ + cZ * sX * sY;
var m22 = cZ * cX;
var m23 = sZ * sY - cZ * cY * sX;
var m31 = - cX * sY;
var m32 = sX;
var m33 = cX * cY;
var rotationMatrix = new THREE.Matrix4(
m11, m12, m13, 0,
m21, m22, m23, 0,
m31, m32, m33, 0,
0, 0, 0, 1
);
gyroscopeQuaternion = new THREE.Quaternion();
gyroscopeQuaternion.setFromRotationMatrix(rotationMatrix);
}, 100);
}
星期一, 7月 21, 2014
星期四, 4月 17, 2014
在Unity 用Gmail帳號寄信 C#
using UnityEngine;//純Log用
using System;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
public class Mail {
public void SendMail() {
MailMessage mail = new MailMessage();
mail.From = new MailAddress("寄件者信箱");
mail.To.Add("收件者信箱");
mail.Subject = "主旨";
try{
//內文附圖
AlternateView plainView = AlternateView.CreateAlternateViewFromString("<p>",null, "text/plain");
mail.AlternateViews.Add(plainView);
AlternateView htmlView = CreateAlternateView("Floor0001");
mail.AlternateViews.Add(htmlView);
//附件
FileStream imageFileStream = new FileStream(Application.streamingAssetsPath+"/Floor0001.jpg",FileMode.Open);
Attachment attachment = new Attachment(imageFileStream,"Floor0001.jpg");
mail.Attachments.Add(attachment);
Debug.Log("Success");
}catch{
Debug.Log("Fail");
}
SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
smtpServer.Port = 587;
smtpServer.Credentials = new System.Net.NetworkCredential("寄件者信箱", "寄件者密碼") as ICredentialsByHost;
smtpServer.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
smtpServer.Send(mail);
}
private AlternateView CreateAlternateView(string pictureName) {
string htmlBody = "<html><body><img src=cid:"+pictureName+"A></img><p>" +
"<img src=cid:"+pictureName+"B></img><p>" +
"Send by unity3d!</body></html>";
AlternateView alternateView = AlternateView.CreateAlternateViewFromString(
htmlBody,
null, "text/html");
imageA.ContentId = pictureName+"A";
LinkedResource imageB = new LinkedResource(Application.streamingAssetsPath+"/"+pictureName+"B.jpg" );
imageB.ContentId = pictureName+"B";
alternateView.LinkedResources.Add(imageA);
alternateView.LinkedResources.Add(imageB);
return alternateView;
}
星期四, 3月 27, 2014
在Mac顯示Android上Unity App的Log
1.開啟終端機
2.將adb拖入終端機會自動顯示路徑
3.出現路徑後加上" logcat -s Unity"
4.按下return
adb在SDK資料夾中
2.將adb拖入終端機會自動顯示路徑
3.出現路徑後加上" logcat -s Unity"
4.按下return
adb在SDK資料夾中
/adt-bundle-mac-x86_64-20131030/sdk/platform-tools/adb
訂閱:
文章 (Atom)