参考链接

CSharp版驱动

参考链接

创建用户

  1. 参考链接
  2. readWriteAnyDatabase role只能用于admin数据库

图形客户端

性能

参考

Daemon

  • mono-service

参考链接

安装

Linux

  1. yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel cairo-devel
  2. 这里找到合适的版本,并安装
    1
    2
    3
    4
    5
    6
    7
    #cd /usr/local/src/
    #wget http://download.mono-project.com/sources/mono/mono-x.x.x.tar.bz2
    #tar -jxvf mono-3.4.0.tar.bz2
    #cd mono-3.4.0
    #./configure --prefix=/usr
    #make
    #make instal

FAQ

1.合并网格后,BlendShape会丢失,组合网格,BlendShape不会丢失,但BlendShape动画会失效。

2.合并网格时,如果SkinnedMeshRenderer里的Bone有些找不到,则会出现合并后看不到模型的情况。

3.对MeshBaker 合并的网格进行烘焙,光照图出现黑斑,如图


这种情况是在Unity5下,没有设置LightMapping UVs 为Generate_new_uv2_layout导致的

合并网格代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class CombineBones : MonoBehaviour {

public GameObject bone;
public List<GameObject> models = new List<GameObject>();
public GameObject human;

// Use this for initialization
void Start () {
human = GameObject.Instantiate<GameObject>(bone);
human.SetActive(true);
bone.SetActive(false);

// 这种是合并网格
addPart2();
// 这种是组合网格。只是把模型挂到骨骼里,并替换模型的骨骼
// addPart3()
}

void addPart2()
{
var bones = getAllChildTransform(human.transform);
List<Material> mats = new List<Material>();
List<Transform> newBones = new List<Transform>();
List<CombineInstance> combineInstances = new List<CombineInstance>();

foreach (var go in models)
{
var smrs = go.GetComponentsInChildren<SkinnedMeshRenderer>();
foreach (var smr in smrs)
{
foreach (var b1 in smr.bones)
{
Transform finded = null;
foreach (var b in bones)
if (b1.name == b.name)
{
finded = b;
break;
}
if (finded != null)
{
newBones.Add(finded);
}
else
{
Debug.LogError("Can not find bone " + b1.name);
}
}
mats.AddRange(smr.sharedMaterials);

for (int sub = 0; sub < smr.sharedMesh.subMeshCount; ++sub)
{
var ci = new CombineInstance();
ci.mesh = smr.sharedMesh;
ci.subMeshIndex = sub;
ci.transform = smr.transform.localToWorldMatrix;
combineInstances.Add(ci);
}
}
}

var humanSMR = human.AddComponent<SkinnedMeshRenderer>();
humanSMR.materials = mats.ToArray();
humanSMR.sharedMesh = new Mesh();
humanSMR.sharedMesh.CombineMeshes(combineInstances.ToArray(), false, false);
humanSMR.sharedMesh.Optimize();
humanSMR.bones = newBones.ToArray();
}

void addPart3()
{
foreach (var go in models)
{
var smrs = go.GetComponentsInChildren<SkinnedMeshRenderer>();
foreach (var smr in smrs)
{
var originSmr = GameObject.Instantiate<SkinnedMeshRenderer>(smr);
var bones = getAllChildTransform(human.transform);


originSmr.transform.parent = human.transform;
originSmr.transform.localPosition = originSmr.transform.localPosition;
originSmr.transform.localScale = originSmr.transform.localScale;
originSmr.transform.localRotation = originSmr.transform.localRotation;

List<Transform> newBones = new List<Transform>();
foreach (var b1 in originSmr.bones)
{
Transform finded = null;
foreach (var b in bones)
if (b1.name == b.name)
{
finded = b;
break;
}
if (finded != null)
{
newBones.Add(finded);
}
else
{
Debug.LogError("Can not find bone " + b1.name);
}
}
originSmr.bones = newBones.ToArray();
}
}
}

Transform[] getAllChildTransform(Transform t)
{
List<Transform> ts = new List<Transform>();
_getAllChildTransform(t, ts);
return ts.ToArray();
}

void _getAllChildTransform(Transform t, List<Transform> ts)
{
for (int i = 0; i < t.childCount; ++i)
{
ts.Add(t.GetChild(i));
_getAllChildTransform(t.GetChild(i), ts);
}
}
}

markdown

markdown writer

  1. project 相关的_mdwriter.cson文件,这里project指Atom的Project,比如把blog/source目录加为Atom的Project,则Project目录就是source目录,所以应该把_mdwriter.cson放到source目录下。
    2.

操作

  • 打开结点层次图

  • 加载Bip骨骼动画
    选中一根骨骼,然后在Motion面板加载BIP骨骼动画文件

  • 线框和实体相互转换的快捷键是F3。
    如果你文件中的骨骼显示的形状是立方体的话,需要选中所有的骨骼,右击进入物体属性,把 display as box 勾选掉就可以了。

  • 设置Pivot
    选中物体~进入设置面板(Herarchy),(影响轴)Adjust Pivot,(仅影响轴)Affect Pivot only

  • 快捷键
    7-查看面数
    m-材质面板

服务器

  • 默认80端口是封闭的,要设置iptables 开放端口
  • 不能使用root用户,只能使用sudo
  • ssh连接奇慢,服务器SSH配置有问题

    1
    2
    UseDNS no
    GSSAPIAuthentication no
  • 缺少软件:expect zip

  • 防火墙要关掉

FAQ

  • 如何从参数传命令给spawn?

    1
    2
    set cmdstr [lindex $argv 0]
    spawn {*}$cmdstr

    控制台使用

    1
    expect ls .