小编Max*_*Max的帖子

SceneKit - 照明和投射阴影

我正在尝试创建一个照亮立方体的聚光灯.然后下面的表面应该显示阴影.不幸的是我无法做到这一点.光线忽略了立方体并将光线投射到表面和立方体上 - 无论立方体是否在路上.

看起来如何:

在此输入图像描述

代码,我只是在每个节点上将castsShadow设置为YES进行测试,但到目前为止没有任何帮助:

BOOL shadows = YES;

_baseNode.castsShadow = shadows;
_scene.rootNode.castsShadow = shadows;

SCNBox *box = [SCNBox boxWithWidth: 50 height: 50 length: 50 chamferRadius: 10];
box.firstMaterial.diffuse.contents = [UIColor colorWithRed: 0.0 green:0.0 blue: 0.8 alpha: 1.0];
box.firstMaterial.doubleSided = YES;
SCNNode *boxNode = [SCNNode nodeWithGeometry: box];

boxNode.position = SCNVector3Make(100, 100, 100);
boxNode.castsShadow = shadows;
[_baseNode addChildNode: boxNode];

SCNBox *plane = [SCNBox boxWithWidth: 1000 height:1000 length: 40 chamferRadius: 10];
plane.firstMaterial.diffuse.contents = [UIColor colorWithWhite: 0.2 alpha: 1.0];
SCNNode *planeNode = [SCNNode nodeWithGeometry: …
Run Code Online (Sandbox Code Playgroud)

lighting objective-c ios scenekit

5
推荐指数
1
解决办法
6119
查看次数

SceneKit:SCNPhysicsBody获取当前速度

如何获得SCNPhyisicsBody的当前速度?

velocity属性总是返回(0.0,0.0,0.0),而我的SCNNode的prensetationNode的physicsBody也是nil.

xcode physics objective-c scenekit swift

5
推荐指数
1
解决办法
679
查看次数

Unity:Android 上的 FPS 随机下降到接近零(提供了很多线索)

首先感谢您花时间查看此内容 - 我们感谢您的任何意见!

\n

关于我们现在面临的问题:\n在过去的几个月里,我们在 Android 上的游戏应用程序中遇到了随机 fps 下降到接近于零的情况,并且到目前为止尚未成功调试该问题。它完全随机发生(有时在 3 分钟后,有时在 3 小时后),感觉就像冻结一样 - 但实际上 FPS 在仍在运行时下降得非常快。\n我们已经花了相当多的时间使用各种工具进行调试和分析。现在我们希望您能帮助我们并从我们的数据中得出新的结论。

\n

版本:

\n
    \n
  • Unity版本:2020.3.30f1
  • \n
  • 用户计划:10.8.1
  • \n
\n

线索:

\n
    \n
  • 这不是完全冻结。如果您等待足够长的时间,新的帧就会被渲染。
  • \n
  • 首先,帧时间变为 30 毫秒、50 毫秒、100 毫秒、500 毫秒、1000 毫秒、3 分钟、5 分钟等 - 在很短的时间内
  • \n
  • 该问题已在不同的 Android 设备上重现(例如 OnePlus 6)
  • \n
  • 在统一分析器中,我们可以看到,当问题发生时,主线程似乎正在等待渲染线程上的“gfx.presentframe”
  • \n
  • 负载没有实际增加(您可能在同一场景中闲置 30 分钟,一切都很好,然后 fps 突然下降。我们也没有看到多边形、内存使用量增加,分析器中的任何内容都没有增加)
  • \n
  • 问题发生在屏幕上具有不同对象的不同场景等中
  • \n
  • 问题随机发生,有时在运行应用程序 5 分钟后,有时在运行应用程序 2 小时后。它似乎与设备变热或进入电源安全模式无关
  • \n
  • 问题不需要任何输入/交互。它只是在让应用程序空闲时发生
  • \n
  • 在 ARM mobile studio 图形分析器中,我们可以看到,一旦问题发生,eglGetCurrentContext() 和下一个命令 (eglGetSyncAttribKHR ) 之间就会有约 3 分钟(或更长)的间隙 - 然而命令本身只需要几个 …

performance android opengl-es game-development unity-game-engine

5
推荐指数
1
解决办法
1644
查看次数

在后台线程中加载UIImage

是否可以在后台线程中加载UIImage而不会导致线程问题?如果不是最好的方法是什么?我正在使用iOS 8.这就是我现在这样做的方式:

    dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
    dispatch_async(backgroundQueue, ^{
        UIImage *image = [UIImage imageNamed: fileName];

        // only update UI on the main thread
        dispatch_async(dispatch_get_main_queue(), ^{
            [self setImage: image];
        });

    });
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c uiimage ios ios8

4
推荐指数
1
解决办法
4382
查看次数

SceneKit - 向场景添加新的SCNNode会导致严重延迟

我发现将SCNNodes(带有SCNGeometry)添加到场景会导致严重的滞后峰值.

根据Time Profiler,它必须生成几何(至少函数/方法被称为).它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作.因此,使用SCNNodes创建池将不起作用.

有没有办法摆脱这种滞后?我希望能够在没有任何FPS丢弃的情况下向场景添加节点.

到目前为止,我唯一的想法是将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这不是一个干净的解决方案.

这是Time Profiler的一个镜头:

在此输入图像描述

performance xcode objective-c ios scenekit

4
推荐指数
1
解决办法
801
查看次数

SceneKit Audio - 如何将SCNPlayer添加到SCNNode并播放声音

我目前正在使用此代码(在SCNNode子类中)在SceneKit中播放声音.

    let audioSource = SCNAudioSource(named: "coin.wav")
    let audioPlayer = SCNAudioPlayer(source: audioSource)
    self.addAudioPlayer(audioPlayer)
Run Code Online (Sandbox Code Playgroud)

这并不理想,因为每次播放新声音时它都会填充audioPlayers数组.理想情况下,我可以为每个我想播放的声音设置一个SCNAudioPlayer,只需调用"播放"功能即可播放.

不幸的是,我找不到播放功能.令我恼火的是,SCNAudioPlayer在添加到节点时会自动播放声音.但我想在没有任何声音回放的情况下设置我的整个场景,然后在稍后的时间点播放声音.

使用SceneKit音频引擎的正确方法是什么?

audio xcode ios scenekit swift

4
推荐指数
2
解决办法
3492
查看次数

CoreAudio:Ausampler Unit复音

我目前正在努力有效地使用Ausampler Unit.我使用了apple示例中的代码:https://developer.apple.com/library/ios/#samplecode/LoadPresetDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011214-Intro-DontLinkElementID_2

缺点似乎是它会立即停止一个音符/样本,如果相同的音符再次出现.因此,如果我发送带有长号预设的midi音符60.然后在拿着这个的时候,我又发了一张纸条60.它切断了第一个音符事件.有没有人知道是否/如何能够持有每一个音符直到音符关闭事件(这个特定音符)进来?

其他问题:如何在发送后改变音符的音量?例如,我用100速度发送了midi音符60和70.虽然音符60仍然播放,但我想减少音量,但保持音符70.这将被称为midi aftertouch.

希望你能帮忙:)

objective-c core-audio audiounit ios coremidi

3
推荐指数
1
解决办法
2222
查看次数

在3D中将CATransformLayer渲染为PNG

我正在尝试将包含几个CAShapeLayers的CATransformLayer渲染到png文件中.我知道如何设置基本渲染,这确实有效.

虽然当我在CATransformLayer上调用renderInContext时,它会将所有内容展平为2D并完全忽略我的变换矩阵(旋转和/或透视).

如何将我的3d CATransformLayer及其所有CAShapeLayers呈现为PNG/UIImage?

3d core-animation render ios catransformlayer

3
推荐指数
1
解决办法
207
查看次数

如何设置SCNShape的细节/平滑度/细分率级别?

我目前正在尝试使用SceneKit中的SCNShapeNode渲染圆。但是不幸的是,它并不能绘制出一个完美的圆,而是一个八边形。

有什么方法可以设置SCNShape的渲染细节吗?

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter: CGPointMake(0, 0) radius: 2 startAngle: 0.0 endAngle: M_PI * 2.0f clockwise: NO];

SCNShape *shape = [SCNShape shapeWithPath:path extrusionDepth: 1.0];
shape.firstMaterial.diffuse.contents = [UIColor colorWithRed: 1.0 green:0.0 blue:0.0 alpha:1.0];    

SCNNode *shapeNode = [SCNNode nodeWithGeometry: shape];
[scene.rootNode addChildNode: shapeNode];
Run Code Online (Sandbox Code Playgroud)

objective-c ios scenekit

3
推荐指数
1
解决办法
1040
查看次数

释放触摸时UISlider太敏感了

在UISlider上释放触摸时,滑块的值会稍微变化并且不受控制地变化.它非常灵敏,甚至只是在屏幕上释放手指时也会发生变化.如何实现用户可以设置他想要的值而不会出现问题?

这就是我创建UISlider的方式:

UISlider *slider = [[UISlider alloc] initWithFrame: CGRectMake(100.0, 100.0, 200.0, 40.0)];
slider.minimumValue = 0.0;
slider.maximumValue = 100.0;
[slider addTarget: self action: @selector(sliderChanged:event:) forControlEvents:UIControlEventAllEvents];
[slider setValue: 50.0 animated: NO];
Run Code Online (Sandbox Code Playgroud)

uikit uislider ios

2
推荐指数
1
解决办法
1334
查看次数

SceneKit - 用于1:1的orthographicProjection指向SceneKit位置比率

必须使用什么orthographicProjection才能在SceneKit中以1:1的方式制作2D应用程序SceneKit指向屏幕点/像素比率?

示例:我想在屏幕上放置一些(200,200),我想使用带有(200,200,0)的SCNVector.我需要什么orthographicProjection呢?

3d xcode objective-c ios scenekit

2
推荐指数
1
解决办法
1201
查看次数