背景信息(可能相关):
我有一个直接使用第三方 DLL(“库 A”)的 Unity 项目,我已将其添加到项目的 Assets 文件夹中。库 A 依赖于另一个 DLL,即“库 B”,我也将其添加到 Assets 文件夹中。库 B 未被 Unity 项目中的任何脚本使用。库 A 和 B 都是用 C# 编写的,目标是 .NET 4,也就是说,它们都是托管代码。
添加到 Assets 文件夹后,当在 Visual Studio 中打开项目时,库 A 和 B 都列在“参考”下,并且“Copy Local”都设置为“True”(虽然我不知道 Unity 是否使用那个财产)。
但是,在 Unity 编辑器中运行项目时,对库 A 的各种调用都会引发异常,表明库 B 不可用。我能够让它工作的唯一方法是将库 B 的副本放入C:\Program Files\Unity\Editor
(包含 Unity.exe 的目录,Unity 编辑器可执行文件)。
我在其他非 Unity 项目中使用过库 A 和 B,并且从未遇到任何问题(只要引用它们,Visual Studio 就会将它们都复制到输出目录中)。我是否缺少告诉它需要库 B 所必需的特定于 Unity 的步骤?
我有一个包含编码旋转和位置数据的 4x4 变换矩阵的数组(我已经确认该矩阵表示 Octave 中的有效变换)。我想使用这个数组的内容设置一个 Three.js 对象(一个Object3D)的 matrixWorld 属性,即根据转换矩阵设置对象的位置和旋转。
根据three.js文档中的这个页面和这里提出的各种问题(例如,this one和this one),似乎关键是设置nameOfObject.matrixAutoUpdate
为false。但是,考虑到这一点,我尝试了多种设置方法nameOfObject.matrixWorld
,但没有一种方法会更改渲染对象的位置:它保持在原点,没有旋转,就像matrixWorld
4x4 单位矩阵的情况一样。
这是我尝试过的(此代码在render()
调用之前位于更新方法中):
// Setting up a three.js matrix
var tempMatrix = new THREE.Matrix4();
tempMatrix.fromArray(arrayContainingTransformationMatrix);
// Values are set as expected
console.log(tempMatrix.elements);
// Note that the approaches below were tried one at a time
// First approach (doesn't work)
nameOfObject.matrixAutoUpdate = false;
nameOfObject.matrixWorld.copy(tempMatrix);
// Second approach (also doesn't work)
// Based on the …
Run Code Online (Sandbox Code Playgroud)