在我完成附带的代码实验室后,我正在修补Sceneform SDK的增强图像示例代码。完成的示例向AR场景添加了两种类型的对象:一种是使用CAD软件建模,并从sfb
二进制文件(即绿色迷宫)加载的对象另一个是红球,它是使用MaterialFactory
和ShapeFactory
在运行时构建的。
一个简单的实验是移除绿色迷宫,只有红色的球(当然也移除物理引擎)。然而,在这种情况下,红球不会出现在增强现实场景中。
有趣的是,绿色迷宫不必出现在场景中——我的意思是我不必创建节点
,分配可渲染等。https://github.com/CsabaConsulting/sceneform-android-sdk/blob/master/samples/augmentedimage/app/src/main/java/com/google/ar/sceneform/samples/augmentedimage/AugmentedImageNode.java#L139:
mazeNode = new Node();
mazeNode.setParent(this);
mazeNode.setRenderable(mazeRenderable.getNow(null));
但是如果我取出装载代码https://github.com/CsabaConsulting/sceneform-android-sdk/blob/master/samples/augmentedimage/app/src/main/java/com/google/ar/sceneform/samples/augmentedimage/AugmentedImageNode.java#L89
mazeRenderable =
ModelRenderable.builder()
.setSource(context, Uri.parse("GreenMaze.sfb"))
.build();
最重要的是,setImage
中的代码,它将等待模型完全加载和构建https://github.com/CsabaConsulting/sceneform-android-sdk/blob/master/samples/augmentedimage/app/src/main/java/com/google/ar/sceneform/samples/augmentedimage/AugmentedImageNode.java#L125
if (!mazeRenderable.isDone()) {
CompletableFuture.allOf(mazeRenderable)
.thenAccept((Void aVoid) -> setImage(image))
.exceptionally(
throwable -> {
Log.e(TAG, "Exception loading", throwable);
return null;
});
return;
}
球不会出现。如果我取出上面的. isDone()
部分,球(以及我添加的任何其他运行时构造的对象)将不会出现。我没有在AR会话
或任何其他地方找到任何指示符,表明某些东西还没有准备好工作。在我的应用程序中,我可能只使用运行时构建的3D对象,我需要一个sfb吗?
发生这种情况是因为基于工厂的场景构建也隐含地包含了完全未来!更具体地说,材料构建是一个返回CompletableFuture
的函数。
没有意识到这一点,我没有引用问题中的重要代码部分。您可以看到迷宫模型加载器说明的正下方:
https://github.com/CsabaConsulting/sceneform-android-sdk/blob/master/samples/augmentedimage/app/src/main/java/com/google/ar/sceneform/samples/augmentedimage/AugmentedImageNode.java#L94
MaterialFactory.makeOpaqueWithColor(context, new Color(android.graphics.Color.RED))
.thenAccept(
material -> {
ballRenderable =
ShapeFactory.makeSphere(0.01f, new Vector3(0, 0, 0), material); });
在这里,我们可以看到. thenAccess(
)的告示牌,它揭示了makeOpaqueAnd Color
返回一个Future。虽然模型加载也在代码中,但我们后来也进行了检查:
if (!mazeRenderable.isDone()) {
CompletableFuture.allOf(mazeRenderable)
不幸的是,这段代码没有注意到同样异步构建的材质。但是,等待三维模型加载的时间足够长,以便在访问时也可以完成材质构建。然而,当我和未来服务员代码部分一起移除迷宫时,等待材料构建完成就没有任何保障了。这导致在材质实际准备就绪之前构建整个场景层次。这会产生一个不可见的场景。
https://github.com/googlecodelabs/arcore-augmentedimage-intro/issues/7
本文向大家介绍Python图像的增强处理操作示例【基于ImageEnhance类】,包括了Python图像的增强处理操作示例【基于ImageEnhance类】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python图像的增强处理操作。分享给大家供大家参考,具体如下: python中PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像
因此,在NetBeans IDE中,一切正常。全力工作。但是在Built&Clean之后,我看不到图像,但所有的操作都完成了。 你能建议出了什么问题吗?因为这个而生气
请假设正常的“新手”的说法。 我使用的是Scala2.12.10;在build.sbt中,我添加了Scalatest: 我将一些scala.js添加到一个现有的java项目中,这样我的scala源代码路径是正常的,但是我为java和资源创建了一些空目录,并使用了一个不同的目标,这样就不会与现有的代码发生冲突: 我将ScalaTest示例文件exampleSpec.scala放在src/test/s
问题内容: Animal animal = new Animal(101); //Constructor is executed. 问题答案: 类中给定方法的默认实现不调用任何构造函数。 它创建对象的“浅表副本”,因为它通过创建新实例然后通过分配复制内容来创建对象的副本,这意味着 如果您的Class包含可变字段,则原始对象和克隆都将引用同一内部对象 。 尝试看看此页面。
问题内容: 有谁知道为什么可以使用或而不是非静态方法在构造函数的第一行中引用方法? 考虑以下工作: 以及以下非工作示例: 问题答案: 非静态方法是实例方法。这只能在现有实例中访问,并且在构造函数中时实例尚不存在(它仍在构建中)。 为什么会这样呢?因为实例方法可以访问实例(非静态)字段,该字段在不同实例中可以具有不同的值,所以在现有的已完成实例之外的其他地方调用这种方法没有任何意义。