Guild icon
swift-developers-japan
開発環境, ライブラリ / scenekit
Avatar
↓の API 、 durationTimeInterval で与えてるのにクロージャの elapsedTimeCGFloat で来るのおかしくないですか? Obj-C で型の違いが軽視されてたから? class func customAction(duration seconds: TimeInterval, action block: @escaping (SCNNode, CGFloat) -> Void) -> SCNAction https://developer.apple.com/documentation/scenekit/scnaction/1523692-customaction
Avatar
omochimetaru 6/7/2018 7:58 AM
おかしそう
Avatar
これは Apple のバグレポートに上げたらいいのかな?
Avatar
omochimetaru 6/7/2018 7:59 AM
やるとしたらそうっぽい
Avatar
でも修正すると既存コードが動かなくなるから厳しそう・・・
8:00 AM
elapsedTime じゃなくて rate でほしい・・・
Avatar
修正&古い方はDeprecatedでOverloadかな
Avatar
オーバーロードじゃambiguousになりそうな・・・
Avatar
omochimetaru 6/7/2018 8:02 AM
CGFloatは型じゃなかったっけ
Avatar
Swift では型だけど Obj-C では typealias じゃないっけ?
Avatar
omochimetaru 6/7/2018 8:02 AM
public typealias TimeInterval = Double TImeIntervalはエイリアス
Avatar
CGFloat は Obj-C では float か double の(環境によって変わる)エイリアスだった気が。 (edited)
Avatar
omochimetaru 6/7/2018 8:04 AM
#if defined(__LP64__) && __LP64__ # define CGFLOAT_TYPE double # define CGFLOAT_IS_DOUBLE 1 # define CGFLOAT_MIN DBL_MIN # define CGFLOAT_MAX DBL_MAX #else # define CGFLOAT_TYPE float # define CGFLOAT_IS_DOUBLE 0 # define CGFLOAT_MIN FLT_MIN # define CGFLOAT_MAX FLT_MAX #endif /* Definition of the `CGFloat' type and `CGFLOAT_DEFINED'. */ typedef CGFLOAT_TYPE CGFloat;
8:04 AM
そうですね。
8:05 AM
ObjCにおいては、 TimeInterval != CGFloat の場合に限ってオーバーロードすれば良さそう。
Avatar
しかも Obj-C では float だとしても暗黙変換される?
Avatar
omochimetaru 6/7/2018 8:08 AM
ObjCでのfloatからdoubleへの変換はデフォルトで暗黙 コンパイラの設定によっては警告が出る
8:08 AM
エラーにすることもできるかな・・・?
Avatar
CGFloatとObjectMapperとIUOの組み合わせでクラッシュを引いたのを思い出した
Avatar
結局 rate がほしかったので、↓になった。 extension SCNAction { class func customActionWithRate(duration: TimeInterval, action block: @escaping (SCNNode, CGFloat) -> Void) -> SCNAction { return customAction(duration: duration) { node, elapsedTime in block(node, elapsedTime / CGFloat(duration)) } } }
Avatar
omochimetaru 7/2/2018 9:45 AM
let plane = SCNPlane() self.plane = plane let planeNode = SCNNode(geometry: plane) scene.rootNode.addChildNode(planeNode) planeNode.scale = SCNVector3(4, 4, 4) let surfaceShader = """ auto diffuse = _surface.diffuse; diffuse = vec4(diffuse.r, 0, 0, 1); _surface.diffuse = diffuse; """ plane.firstMaterial!.shaderModifiers = [ SCNShaderModifierEntryPoint.surface: surfaceShader]
9:46 AM
SceneKitのマテリアルに対して shader modifier という仕組みで サブシェーダーが書ける。面白い。
👀 1
9:47 AM
でも、このシェーダーがコンパイルエラーになってる時にそれを拾う方法がわからなくて死にそう
Avatar
omochimetaru 9/18/2018 7:30 AM
iOS11で正しく表示されてたモデルがiOS12で真っ白になってしまった・・・
Avatar
omochimetaru 9/18/2018 8:30 AM
解決した。SCNSceneに.scnファイルを渡した時に、従来は即座にテクスチャがロードされていたが、最新では描画時にlazyにロードされるようになったっぽい。 従来挙動を前提にテクスチャファイルを削除していたので真っ白になったっぽい。
Avatar
USDZ、quicklookだとちゃんとテクスチャ貼られるけどMDLAssetで読んだらテクスチャ剥がれちゃった。
Avatar
Model IOというのがあるんですね
Avatar
SceneKit.ModelIO、これ使うとusdzもscenekitで読めるようになります!便利
Avatar
SCNScene.init(url:options:)しか知らなかったです
8:18 AM
なるほど。
Avatar
↑の件と全然関係ないけど、usdzってバンドルするとusdzのままipaに含まれるのかきになる
8:23 AM
そのままだった
Avatar
Fileで3Dオブジェクト選択すると綺麗に影が落ちてるんですけど、こういうのってどうやって作ってるんですかね… directionとかspotだとモデル本体にも光当たってしまって綺麗に影が落ちないなぁと
6:31 AM
デフォルトはomniライトじゃないですかね?
6:32 AM
Fileって何のことです?
Avatar
FileはiOSのFileアプリの事です、iOS12からusdzとかをプレビューできるようになりました
Avatar
omochimetaru 1/11/2019 7:29 AM
なるほど!
Avatar
あ、影というのはモデルに対しての陰ではなくて地面に現れる影です
Avatar
omochimetaru 1/11/2019 7:34 AM
7:34 AM
ギターの下に出てる まきびしみたいな形の影の事ですか?
Avatar
ですです!
7:36 AM
普通にSceneに配置すると、影が出ないんですよね
Avatar
omochimetaru 1/11/2019 7:36 AM
これモデルに影がついた半透明ポリゴンが含まれているのかと思ってました
Avatar
あ、それなんですけど自作のモデルでも発生するので動的に焼いているみたいです
Avatar
omochimetaru 1/11/2019 7:36 AM
そうだったのか・・・
Avatar
ARKitのExampleのマグとかはモデル自体に半透明のポリゴンが含まれているみたいです (edited)
Avatar
omochimetaru 1/11/2019 7:37 AM
濃淡のあるソフトシャドウって簡単に出せるのかなあ
7:37 AM
I add one node and try to setting shadow blur with SceneKit here's my light config, I did try to set shadowRadius light = [SCNLight light]; light.type = SCNLightTypeDirectional; light.castsShadow =
7:38 AM
一応設定すればソフトシャドウ自体は得られるみたいですね。
7:39 AM
SceneKit produces soft-edged shadows by rendering the silhouettes of scene geometry into a 2D shadow map and then using several weighted samples from the shadow map to determine the strength of the shadow at each pixel in the rendered scene.
Avatar
このパラメタはやってなかったのでちょっと帰ったら試してみよう、、 昨晩色々試したんですけど、モデル自体に結構光が当たってテカる感じになっちゃったんですよね
Avatar
omochimetaru 1/11/2019 7:40 AM
この標準のビューワーのソースコードが見たいですね
Avatar
ですね、Sceneのダンプが出来るとかなり捗りそう
Avatar
omochimetaru 1/11/2019 7:40 AM
あー
7:41 AM
Safariデバッガーみたいに、SceneKitインスペクタが別プロセスでもアタッチできたりしたら、良いのに。
Avatar
With iOS 12, ARKit includes a built-in viewer for displaying and sharing high-quality 3D content using Pixar's usdz file format. Get...
2:33 AM
Contact Shadowというみたいですね
Avatar
omochimetaru 1/12/2019 2:34 AM
Avatar
SceneKitのAmbientOcclutionをtexture bakingするとtextureめちゃくちゃになっちゃう…
8:01 PM
8:01 PM
Xcode9.4.1/10.1だと⤴︎の現象 Xcode10.2Betaだと「An error occurred while baking ambient occlusion maps.」でそもそも実行できなかった (edited)
Avatar
テクスチャを垂直方向に反転させる必要があるみたい
Avatar
MDLAssetのgenerateAmbientOcclusionTextureでAOのテクスチャをランタイムで生成できるのだけど、iOSで実行しても 2019-02-10 19:06:15.462995+0900 xxxxx[1179:222116] IIOImageWriteSession:115: cannot create: '/tmp/originalAOTexture.png.sb-7dc5bb5d-hKjFB0' error = 1 (Operation not permitted) と言われて生成できない…。 /tmp/にアプリから書き込め無いような
Avatar
↑TSI出してみた
Avatar
ランタイムでAO焼く実装のサンプルあげました https://github.com/noppefoxwolf/SceneKit_runtimeAO_Example
Contribute to noppefoxwolf/SceneKit_runtimeAO_Example development by creating an account on GitHub.
4:46 AM
めっちゃ遅い、CPUでやってる気がする
Avatar
omochimetaru 3/19/2019 5:19 AM
MDL系のAPIもこういうノードツリー持ってるんですね
Avatar
Kishikawa Katsumi 4/12/2019 2:33 PM
SceneKit、macOSもiOSも新しく作っただけのプロジェクトを実行するだけでメモリリークがいっぱい検出されるんだけどしょうがない? 1つアプリを作ってどうしてもメモリ消費ががちょっとずつ増えていくのが解決しなくてもしやこれは最初からなのではと思ってやってみたら最初からだった。
Avatar
omochimetaru 4/12/2019 4:05 PM
本当ですね。iOSのゲームアプリSceneKitテンプレートで、Leaksの2サイクル目で144件。
4:05 PM
飛行機のモデルを出すところをコメントアウトしてほぼ無のテンプレートにしても22件。
4:06 PM
なんで自分気づいてなかったんだろうと思って手元のをLeaksかけてみたら普通に別のリークでてきたので単に今まで見てなかったかも・・・
Avatar
Kishikawa Katsumi 4/12/2019 4:41 PM
誤検知ということもおそらくないので、これはしょうがないとしてひとまずやるしかなさそう😓 Node
4:42 PM
NodeにCALayerでもなんでも貼れて思ってたよりもだいぶ便利だな、と再評価してたのだけど。。。
4:42 PM
使いやすいし、APIはよくできてると、思う。
Avatar
omochimetaru 4/12/2019 4:45 PM
SCNMaterialの.contentsですか?>CALayer
4:46 PM
あ、ほんとだ、CALayerは明確に許されているのか。
Avatar
Kishikawa Katsumi 4/12/2019 4:49 PM
そう。なかなかおもしろいのができたの思うので今度公開しますね。
4:49 PM
ずっと動かしてるとメモリをすごい使うことになるけど。。。
Avatar
omochimetaru 4/12/2019 4:50 PM
お〜気になります
Avatar
Kishikawa Katsumi 4/14/2019 5:07 PM
@omochimetaru https://github.com/folio-sec/Slideshow とりあえずコードを公開しました。
3D Picture Gallery Slideshow powered by SceneKit. Contribute to folio-sec/Slideshow development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 4/14/2019 6:53 PM
大型ディスプレイに投影するデジタルサイネージを作る仕事をしました。 できあがったのがこれです。 github.com まず、アートディレクターと相談して、下記の映像を参考にして3D空間を飛び回るようなスラ...
Avatar
おもしろいですね!
Avatar
3D Picture Gallery Slideshow powered by SceneKit. Contribute to folio-sec/Slideshow development by creating an account on GitHub.
Avatar
事実上、任意のAppKitもしくはUIKitのUIを3D空間に表示できます。
AppKit の UI ではなく直接 CALayer として組み立ててるのはなんでですか?パフォーマンス上の理由? NSView にして auto layout でレイアウトとかもできるわけですよね? https://github.com/folio-sec/Slideshow/blob/master/Slideshow/PhotoLayer.swift
(edited)
3D Picture Gallery Slideshow powered by SceneKit. Contribute to folio-sec/Slideshow development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 4/15/2019 12:57 AM
NSViewもおそらく貼れるようで、おっしゃる通りAutoLayoutが使えてAutoLayoutが使えると左上基準でレイアウトできて楽、なんですけどなんかうまくいかなかったので、うまくいったレイヤーでやってます。 どうせLayer backedにするので(そうしないと不便でやってられない。)パフォーマンスは変わらないのでは、と思っています。
12:58 AM
特に明確な理由はなく手さぐりでSceneKitを触りつつ時間の制約もあったので、うまくいったやり方を採用した、となります。
Avatar
なるほど。ちょっと UIView + AutoLayout を SceneKit のテクスチャとして使ってやってみたいことがあるので、もし試して何か知見が得られたら報告します。やるにしても少し先になりそうですが・・・。
1:29 AM
マテリアルに晴れるオブジェクト一覧にUIView, NSViewは書いてないので、
1:29 AM
動いたとしても将来壊れたりしそうです
Avatar
UIView の layer を貼ってできない?
Avatar
omochimetaru 4/15/2019 1:29 AM
SceneKit cannot use a layer that is already being displayed elsewhere (for example, the backing layer of a UIView object).
1:30 AM
UIViewのバッキングレイヤーは使えないって書いてあります
Avatar
そうなのか・・・。
1:33 AM
うーん、じゃあレイアウトのために UIKit 使ってるだけだし、画像として書き出してから貼るのが現実的かな・・・。
Avatar
omochimetaru 4/15/2019 1:35 AM
画像として書き出してから貼る
GoogleMap SDKが
1:36 AM
地図上に貼るピンを、UIViewで与えられるんですが、そのUIViewの見た目をテクスチャ化した上でポリゴンで描画してて
1:36 AM
毎フレーム更新モードだとまあまあ重かったです。
Avatar
今やりたいことは、静的なので画像生成は単発なので大丈夫かと。
Avatar
omochimetaru 4/15/2019 1:37 AM
それだと良さそう。
Avatar
GoogleMap SDK が何やってるかわからないけど、毎フレーム画像の allocate してたりしないかな?さすがにそれはない? view の変更がある度にレンダリングしてテクスチャ転送ってそんなに重いかな?動画をテクスチャにするのとかよりマシそうな気が。
Avatar
omochimetaru 4/15/2019 1:42 AM
変更があるたびに だと軽いです そういうモードもあるんだけど、変更検知がまともに動いてないので手動で通知する必要があって大変。
1:42 AM
動画をテクスチャにするのはビデオデコーダがGPU上でレンダリングしてる場合はかなり軽いと思いますよ、転送コストが無いので
1:43 AM
毎フレーム画像の allocate
無いと思うけどバイナリ配布のライブラリなのでわからないですね
Avatar
GL で CPU で動画デコード + 転送やってた経験からそこまで重くならなさそうな気がするんだけどなぁ。「まあまあ重かった」の程度にもよるけど。
Avatar
Kishikawa Katsumi 4/15/2019 1:46 AM
ビューだとなんかうまくいかなかったのは対応してないってことなのかな。 なんか表示前のならいける、と都合よく解釈してた。
Avatar
omochimetaru 4/15/2019 1:46 AM
60x80ptぐらいでパーツが10個ぐらいのピンが50枚ぐらいになるとiPhoneSEでフレームレートがガタつきはじめる。
1:47 AM
対応してない
ビューも貼れるよ的な情報はSOで見たことがある気がします。動く条件もなにかしらありそう。
Avatar
それくらいの分量だと重くなってもおかしくなさそう。
Avatar
Kishikawa Katsumi 4/15/2019 1:52 AM
ひとつひとつがビューだとすると500個以上のビューになるからまずそれがパフォーマンスに影響してそう。
Avatar
omochimetaru 4/15/2019 1:55 AM
毎フレーム転送じゃなければ大丈夫ですよ。
1:56 AM
まあ、そもそも50個もビューが出てるのはナンセンス(重なって見えないし)ですね。 (edited)
Avatar
omochimetaru 4/15/2019 2:18 AM
プロジェクト開いてみました。こうやってDebug/Release違いのスキーム作るの良いですね。
Avatar
Kishikawa Katsumi 4/15/2019 4:28 AM
アプリだと便利なんですよね。
Avatar
Kishikawa Katsumi 4/15/2019 5:32 AM
ちょっとずつメモリ消費が増えていくの、リークのせいもあるっぽいけど心配するほどではないっぽい。どっちかというとレンダリング結果のキャッシュ?が一番多いんだと思う。 スライドショーのアプリ、実際はもう少しコードがあるんだけど、それを金曜からずっと動かしていてもちゃんと動いていたからリークによるメモリの増加はまあ誤差といえば誤差の範囲っぽい。気になるけど。
👀 1
Avatar
Xcode の Scene Editor で z-fighting を解決する方法がわかる方いませんか? floor の上に重ねて plane を置きたいんですが・・・。
Avatar
昨日名前が思い出せなかったんですが、↓のpolygon offsetのようなものを想定しています。 https://sites.google.com/site/threejstuts/home/polygon_offset
11:06 PM
scene editor に限らず SceneKit と polygon offset で検索しても全然情報が出てこない…。
Avatar
omochimetaru 5/10/2019 2:55 AM
My app currently uses OpenGL and i set polygon offset using glPolygonOffset and GL_POLYGON_OFFSET_FILL. I am in the process of transforming my code to Metal and looking for the equivalent methods in
🙏 1
👍 1
2:55 AM
SceneKitにその概念が導入されてるかはわからないけど。
Avatar
そんな呼び方があるのか。
Avatar
SCNTechniqueに対してCABasicAnimation使ったことある方いらっしゃいますか? 試行錯誤しているのですが、上手く動かず… 再現projはこんな感じです https://github.com/noppefoxwolf/SCNTechnique-Animation-Demo
Contribute to noppefoxwolf/SCNTechnique-Animation-Demo development by creating an account on GitHub.
Avatar
なんかアニメーション中に同じsymbolを適当な値でsetObjectすると、そのフレームだけ正しいアニメーションの値で描画される。
Exported 126 message(s)
Timezone: UTC+0