使用three.js我有以下内容.
给定正在查看的对象和摄像机位置,他们选择如何计算最终摄像机位置以"最佳地适应"屏幕上的对象?
如果在某些屏幕上"按原样"使用摄像机位置,则对象会在我的视口边缘流血,而其他位置则显得较小.我相信可以将物体安装到相机平截头体上,但却找不到合适的物体.
我有一个场景,呈现一个有几个对象的板.单击其中一个对象并使用对象拾取,我可以获取对象并为摄像机位置设置动画,使其位于对象的"俯视"视图中.然后使用camera.lookAt方法我可以强制相机直接查看对象.
我在动画开始时注意到在onUpdate方法中调用camera.lookAt时的快速跳转,因为它最初有一个很大的距离来旋转以查看所选对象.相比之下,每次对camera.lookAt的调用都很小,而且动画效果很好.
// Position the camera to fit
var tween = new TWEEN.Tween(camera.position).to({
x: selectedObject.position.x,
y: selectedObject.position.y,
z: 1
}).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function() {
camera.lookAt(selectedObject.position);
}).onComplete(function() {
camera.lookAt(selectedObject.position);
}).start();
Run Code Online (Sandbox Code Playgroud)
有没有办法动画方法或我必须手动转换相机的矩阵值来查看我选择的对象?
这是一个例子的小提琴.它使用WebGLRenderer,因此请使用合适的浏览器.
http://jsfiddle.net/fungus1487/SMLwa/
谢谢你的帮助.
我正在使用D3 v4来构建一棵树.
小提琴:https: //jsfiddle.net/a6pLqpxw/
我现在正在尝试添加对从所选节点动态添加(和删除)子项的支持.
但是,如果不进行完整的重绘,我无法重绘图表.我修改了可折叠树图代码中的代码:https://bl.ocks.org/d3noob/43a860bc0024792f8803bba8ca0d5ecd
具体而言,以下块不会重新计算其子项的布局.
document.getElementById('add-child').onclick = function() {
console.log(selected);
selected.children.push({
type: 'resource-delete',
name: new Date().getTime(),
attributes: [],
children: []
});
update(selected);
};
Run Code Online (Sandbox Code Playgroud)
有没有人有任何在D3.js v4中动态添加/删除节点的好例子?
无论如何使用三个j来定义对象的剪切区域?我有一个包含子对象的父对象,我想根据视口剪切子对象.
就像是...
// Create container and children
var container = new THREE.Object3D();
for(var i = 0; i < 100; i++) {
var geometry = new THREE.PlaneGeometry(i, 0, 0);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
var child = new THREE.Mesh(geometry, material);
container.add(child);
}
// Create bounding box which is my viewport
var geom = new THREE.Geometry();
geom.vertices.push(new THREE.Vector3(0, 0, 0));
geom.vertices.push(new THREE.Vector3(10, 0, 0));
geom.vertices.push(new THREE.Vector3(10, 1, 0));
geom.vertices.push(new THREE.Vector3(0, 1, 0));
geom.computeBoundingBox();
// Magic property (THIS DOESNT EXIST)
container.clipRegion = …Run Code Online (Sandbox Code Playgroud) 使用带有MySql Connector 6.6.6.0的Entity Framework 5.0进行基于计数的查询时,我们遇到的性能非常差.我们的数据结构如下:
Table: Post =========== ID INT PRIMARY KEY MemberID INT NOT NULL SiteID INT NOT NULL Description VARCHAR(255) NOT NULL Image VARCHAR(255) NOT NULL CreatedDate DATETIME NULL
并使用具有linq查询的实体框架,如下所示:
var count = entities.Post.Where(p =>
p.SiteID == 1 && p.CreatedDate != null).Count();
我们得到以下生成的SQL:
SELECT `Extent1`.`ID`, `Extent1`.`MemberID`, `Extent1`.`SiteID`, `Extent1`.`Description`, `Extent1`.`Image`, `Extent1`.`CreatedDate` FROM `Post` AS `Extent1` WHERE (`Extent1`.`SiteID` = 1) AND (`Extent1`.`CreatedDate` IS NOT NULL)
这会读取所有记录并将其计入内存中......效率极低,因为它应该类似于:
SELECT COUNT(ID) FROM `Post` WHERE `SiteID` = 1 AND `CreatedDate` IS NOT NULL;
反正有没有提示我们不想将所有记录读入内存并只执行SQL …
我们有一个 MySQL 数据库,用于我们的 .NET MVC Web App。我们实现了连接池,因为它具有一些巨大的性能优势。
我们还在一些关键存储过程中完成了一些相当繁重的处理。
他们创建了几个临时表和用户变量,它们在连接的生命周期内保持有效。但是,启用池后,这些对象不会被重置/杀死。
在这种情况下,我应该重新初始化用户变量并删除/重新创建临时表吗?
保证不会同时访问连接,因此当两个 SP 正在执行/填充临时表等时,我不应该有任何并发问题。
我们有几个 EC2 实例,每个实例都有多个驱动器。当有多个驱动器在一起时,在 AWS 控制台中监控哪个驱动器是正确的驱动器会变得令人困惑。
命名约定可以在一定程度上帮助实现这一点。
但是有没有办法在 EBS 磁盘的窗口中获取卷 ID(或某些标识符),以便可以在 AWS 控制台中找到它?
我们正在将一个非常大的项目移植到 Vue.js 中,并希望在我们进行时彻底实现我们的单元测试套件。
我们想验证组件是否在创建时设置了所有必需的属性,我的测试用例如下所示:
describe('Input', () => {
it('fail initialization with no value', () => {
const vm = mount(Input, {
propsData: {},
});
// expecting above to fail due to required prop 'value'
});
});
Run Code Online (Sandbox Code Playgroud)
该组件Input应包含一个属性value。我可以通过控制台发出的警告看到它丢失了,但我们希望在我们的单元测试中捕获它。直接测试这没有多大意义,但是一旦我们有组件嵌套多个组件,确保每个组件正确初始化其子组件很重要,这是通过向我们保证上述测试应该失败并被捕获失败来实现的。
然而,没有例外,我们有想法可以挂钩,Vue.warnHandler但这似乎只是确认构造函数按预期工作的大量工作。
是否有推荐的方法来使用 Vue.js 执行此操作?
javascript ×3
three.js ×3
webgl ×2
.net ×1
amazon-ebs ×1
amazon-ec2 ×1
c# ×1
d3.js ×1
mocha.js ×1
mysql ×1
tree ×1
typescript ×1
vue.js ×1