๐ŸŽ iOS & Swift

[WWDC22] What's new in SF Symbols 4

taeeekki 2022. 7. 6. 00:02

What's new in SF Symbols 4

Explore the latest updates to SF Symbols, Apple's extensive library of iconography designed to integrate seamlessly with San Francisco, the system font for all Apple platforms. Discover the latest additions to the SF Symbols library and new categories in the app. Learn about the new Automatic behavior, which chooses the rendering mode that best highlights what's unique about the symbol's characteristics. See how to use the new Variable Color feature to make a symbol more dynamic. We'll also learn about a more efficient way of annotating symbols with the new unified approach. To get the most out of this session, we recommend first watching “What's new in SF Symbols” from WWDC21.

 

์ด ์‹œ๊ฐ„์—๋Š” SF Symbols 4 ๋ฒ„์ „์— ์—…๋ฐ์ดํŠธ ๋œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋ฒˆ์— Rendering Mode์— ๋Œ€ํ•ด ์ข€ ํฅ๋ฏธ๋กญ๊ฒŒ ๋ณด์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ SF Symbols 3 ๋ฒ„์ „์—๋„ ์žˆ๋Š” ๋‚ด์šฉ์ด์—ˆ์ง€๋งŒ ์ด๋ฒˆ ์‹œ๊ฐ„์—์„œ์•ผ ์กฐ๊ธˆ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ์•Š์•˜๋‚˜ ์‹ถ๋„ค์š”.

 

๋“ค์–ด๊ฐ€๋ฉฐ

Symbol = ์‹ฌ๋ณผ = ๊ธฐํ˜ธ = ์•„์ด์ฝ˜ = ์ƒ์ง•

 

์‹ฌ๋ณผ์€ ๊ทธ๋ž˜ํ”ฝ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ๋‹จ์ผ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋А๋‚Œ, ๋Œ€์ƒ, ๋™์ž‘ ๋˜๋Š” ๊ฐœ๋…์„ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‹ฌ๋ณผ์€ ์˜์‚ฌ ์†Œํ†ต์„ ๋•๋Š” ํ›Œ๋ฅญํ•œ ๋ฐฉ๋ฒ•์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ธ์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด ๋ฉ๋‹ˆ๋‹ค.

 

์‹ฌ๋ณผ์€ ๋˜ํ•œ ์ƒํ˜ธ์ž‘์šฉ์˜ ์ˆ˜๋‹จ์ด ๋˜๊ณ  ๊ณต๊ฐ„ ํšจ์œจ์ ์ด๋ฉฐ ๋งŽ์€ ์ด์ ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ์  ๋งค๋ ฅ์„ ๋†’์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ด๋Œ์–ด๋ƒ…๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์–ธ์–ด์˜ ์žฅ๋ฒฝ์„ ๋„˜์„ ์ˆ˜ ์žˆ๊ณ , ๊ณต์œ ๋œ ์•„์ด๋””์–ด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์‚ฌ๋žŒ๋“ค์„ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ๋™์˜ํ•˜๋Š” ๋ฐ”์ด๋‹ค. ์‹ฌ๋ณผ(๊ธฐํ˜ธ)๋ผ๋Š” ๊ฒƒ์€ ์ƒํ˜ธ์ž‘์šฉ, ์†Œํ†ต์„ ํ•˜๋Š” ๋ฐ์— ์žˆ์–ด ์ •๋ง ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์—ฌ๋Ÿฌ ๋‹จ์–ด, ๋ฌธ์žฅ์„ ์“ฐ๋Š” ๊ฒƒ๋ณด๋‹ค ํ•˜๋‚˜์˜ ๊ธฐํ˜ธ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ (์œ„์—์„œ ์–ธ๊ธ‰๋จ.)์€ ๋„ˆ๋ฌด๋‚˜๋„ ๋งŽ๋‹ค.

Apple์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ „๋ฐ˜์ ์ธ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์‹ฌ๋ณผ์€ ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ Apple์€ ์‹œ์Šคํ…œ ๊ธ€๊ผด์ธ San Francisco์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋„๋ก ์„ค๊ณ„ํ•œ ์•„์ด์ฝ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ SF Symbols์„ ๋งŒ๋“ค์–ด๋ƒˆ์Šต๋‹ˆ๋‹ค. SF Symbols๋Š” ํƒ€์ดํฌ๊ทธ๋ž˜ํ”ผ๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๋””์ž์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. SF Symbols๋Š” Weights, Scales, Outlined, Filled variants, Encapsulated Shapes, Alignments ๋“ฑ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ค๋Š˜์˜ ์ด์•ผ๊ธฐ

์˜ค๋Š˜์€ ์–ด๋–ค ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณผ๊นŒ์š”?

์„ธ์…˜์—์„œ๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€ ๋‚ด์šฉ์ด ์–ธ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

  • New symbols
  • Rendering modes
  • Variable Color
  • Unified annotations

๋‹ค์Œ์˜ ๋‚ด์šฉ์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ฃ .

 

New Symbols

4,000์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ๊ณผ์—ฐ ๋ฌด์—‡์„ ์˜๋ฏธํ• ๊นŒ์š”? ๊ธฐ์กด์˜ ์‹ฌ๋ณผ๊ณผ ๋”๋ถˆ์–ด 700๊ฐœ ์ด์ƒ์˜ ์ƒˆ๋กœ์šด ์‹ฌ๋ณผ์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ SF Symbols๋Š” ์ด์ œ 4,000๊ฐœ ์ด์ƒ์˜ ๊ณ ์œ ํ•œ ๊ธฐํ˜ธ๋ฅผ ๊ฐ€์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (์™€์šฐ!! ๐Ÿ˜ฒ)

์ด๋ฒˆ์— ์ถ”๊ฐ€๋œ ๊ฒƒ๋“ค ์ค‘์—์„œ ํฌ๊ฒŒ 5๊ฐ€์ง€์˜ ์นดํ…Œ๊ณ ๋ฆฌ์— ์ง‘์ค‘ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”.

5๊ฐœ์˜ ์ƒˆ๋กœ์šด ์นดํ…Œ๊ณ ๋ฆฌ

  1. Camera & Photos
  2. Accessibility
  3. Privacy & Security
  4. Home
  5. Fitness

์•„๋ฌด๋ž˜๋„ ์ด๋ ‡๊ฒŒ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋˜๋Š” ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋ณด๋ฉด ๊ทธ ํ•ด์— Apple์ด ์–ด๋–ค ๋ถ„์•ผ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

Rendering Mode (๋ Œ๋”๋ง ๋ชจ๋“œ)

์ด๋ฏธ 4๊ฐ€์ง€์˜ ๋ Œ๋”๋ง ๋ชจ๋“œ๋Š” ๊ธฐ์กด์— ์†Œ๊ฐœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€๋„๋ก ํ• ๊ฒŒ์š”. (๊ทผ๋ฐ ์ €๋„ ์ด๋ฒˆ์—์„œ์•ผ ์กฐ๊ธˆ ์ฐพ์•„๋ดค์–ด์š”..ใ…Ž)

SF Symbol 3์—์„œ ์†Œ๊ฐœ๊ฐ€ ๋˜์—ˆ๋˜ 4๊ฐ€์ง€์˜ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์‚ดํŽด๋ณผ๊ฒŒ์š”. SF Symbol 3์—์„œ๋Š” ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹ฌ๋ณผ์˜ path๋ฅผ primary, secondary, tertiary ์™€ ๊ฐ™์€ ๋ณ„๊ฐœ์˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. (๋ ˆ์ด์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋‹ˆ ํฅ๋ฏธ๋กญ์ฃ ?)

path๋ผ๊ณ  ํ•จ์€ ์„ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ Symbol์€ ๋ชจ๋‘ path ๋˜๋Š” ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„(๋น„์–ด ์žˆ๋Š” ๊ณต๊ฐ„)์œผ๋กœ ๋‚˜๋‰˜์–ด์ง€๊ณ  ์žˆ์–ด์š”.

์ด์–ด์„œ ๊ธฐ์กด์˜ 4๊ฐ€์ง€ Mode๋ฅผ ๋จผ์ € ๋ณด๊ณ  ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋‚ด์šฉ์€ ๋ฌด์—‡์ธ์ง€ ๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

  1. Monochrome (๋‹จ์ƒ‰)
  2. Hierarchical (๊ณ„์ธต)
  3. Pallete (ํŒ”๋ ˆํŠธ)
  4. Multicolor (์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ƒ‰)

์–ด๋–ป๊ฒŒ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ Playground์—์„œ SwiftUI๋ฅผ import ํ•ด์™€์„œ Live View๋กœ ๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

1. Monochrome (๋‹จ์ƒ‰)

์‹ฌ๋ณผ์— ํ•œ ๊ฐ€์ง€ ์ƒ‰์ƒ์„ ์ง€์ •ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. path๋ฅผ ์ง€์ •ํ•œ ์ƒ‰์ƒ์œผ๋กœ ๋ Œ๋”๋ง ํ•˜๋Š” ๊ฑด๋ฐ์š”. ๊ทธ๋ƒฅ ํ†ต์ผ๋œ ์ƒ‰์ƒ์„ ์ ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

struct ContentView: View {
    var body: some View {
        Image(systemName: "thermometer.sun.fill")
            .symbolRenderingMode(.monochrome)
            .foregroundStyle(.red, .yellow, .green)
            .font(.system(size: 150))
            .frame(width: 400, height: 400, alignment: .center)
            .background(Color.gray)
    }
}

PlaygroundPage.current.setLiveView(ContentView())

 

2. Hierarchical (๊ณ„์ธต)

๋ญ”๊ฐ€ ๊ณ„์ธต์ด ๋‚˜๋‰˜์–ด ์žˆ์„ ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜์š”? ์œ„์—์„œ ์‹ฌ๋ณผ์˜ path๋ฅผ ๋ณ„๊ฐœ์˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ ˆ์ด์–ด์—๊ฒŒ ๋‹ค๋ฅธ ์ƒ‰์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ๋ถˆํˆฌ๋ช…๋„(opacity)๋ฅผ ์กฐ์ •ํ•ด์„œ ๊ณ„์ธต์˜ ์œ„๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์ƒ‰์ƒ(์ฒซ ๋ฒˆ์งธ ์ง€์ •ํ•œ ์ƒ‰์ƒ)์— ๋”ฐ๋ผ ์–ด๋–ค ์ƒ‰์ƒ์œผ๋กœ ๋ Œ๋”๋ง ๋  ์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

struct ContentView: View {
    var body: some View {
        Image(systemName: "thermometer.sun.fill")
            .symbolRenderingMode(.hierarchical)
            .foregroundStyle(.red, .yellow, .green)
            .font(.system(size: 150))
            .frame(width: 400, height: 400, alignment: .center)
            .background(Color.gray)
    }
}

PlaygroundPage.current.setLiveView(ContentView())

 

3. Pallete (ํŒ”๋ ˆํŠธ)

Pallete๋Š” ์šฉ์–ด์—์„œ ๋А๊ปด์ง€๋“ฏ์ด ์ง€์ •ํ•œ ์ƒ‰์ƒ์„ ๋ชจ๋‘ ์ ์šฉ์‹œ์ผœ์ค„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ์‹ค์ œ๋กœ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด์–ด ๋‹น ํ•˜๋‚˜์˜ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•ด์„œ ๋ Œ๋”๋ง์„ ํ•ด์ฃผ๋Š”๋ฐ์š”. ๋งŒ์•ฝ์— 3๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์‹ฌ๋ณผ์— ๋‘ ๊ฐ€์ง€ ์ƒ‰์ƒ๋งŒ ์ง€์ •ํ•˜๋ฉด secondary, tertiary ๋ ˆ์ด์–ด๋Š” ๋™์ผํ•œ ์ƒ‰์ƒ์„ ์‚ฌ์šฉํ•˜๊ณ , 2๋‹จ๊ณ„ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์‹ฌ๋ณผ์— ์„ธ ๊ฐ€์ง€ ์ƒ‰์ƒ์„ ์ง€์ •ํ•˜๋ฉด ๋‘ ๋ฒˆ์งธ ์ƒ‰์ƒ๊นŒ์ง€๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

struct ContentView: View {
    var body: some View {
        Image(systemName: "thermometer.sun.fill")
            .symbolRenderingMode(.palette)
            .foregroundStyle(.red, .yellow, .green)
            .font(.system(size: 150))
            .frame(width: 400, height: 400, alignment: .center)
            .background(Color.gray)
    }
}

PlaygroundPage.current.setLiveView(ContentView())

4. Multicolor (์—ฌ๋Ÿฌ ์ƒ‰์ƒ)

๋งˆ์ง€๋ง‰ ๋ Œ๋”๋ง ๋ชจ๋“œ๋Š” ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ •์˜๋œ ์ƒ‰์ƒ์ด ๋‚˜์˜จ๋‹ค๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—†๋Š”๋ฐ์š”. ๊ฐ๊ฐ์˜ ์‹ฌ๋ณผ์˜ ์˜๋ฏธ์— ๋งž๊ฒŒ ์ ์ ˆํ•œ ์ƒ‰์ƒ์„ ์ด๋ฏธ Apple์ด ์ •ํ•ด๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ฃผ์˜ํ•  ์ ์€, ์ผ๋ถ€ Multicolor Symbols๋Š” ๋‹ค๋ฅธ ์ƒ‰์ƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜๋„ค์š”!

struct ContentView: View {
    var body: some View {
        Image(systemName: "thermometer.sun.fill")
            .symbolRenderingMode(.multicolor)
            .foregroundStyle(.red, .yellow, .green)
            .font(.system(size: 150))
            .frame(width: 400, height: 400, alignment: .center)
            .background(Color.gray)
    }
}

PlaygroundPage.current.setLiveView(ContentView())

Automatic Rendering

์ž, ๊ทธ๋Ÿผ ๋„˜์–ด์™€์„œ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์‚ดํŽด๋ณผ๊นŒ์š”? ๊ธฐ์กด์—๋Š” ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Monochrome์ด ์ง€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ฌํ•ด(SF Symbols4)๋ถ€ํ„ฐ๋Š” ๊ฐ ์‹ฌ๋ณผ์˜ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์žฅ ์ž˜ ๊ฐ•์กฐํ•˜๋Š” ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์นด๋ฉ”๋ผ ๋ Œ์ฆˆ ๋ฐ ํ•„ํ„ฐ ์‹ฌ๋ณผ

ํ•ด๋‹น ์‹ฌ๋ณผ์€ ์ž๋™ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๋ฉด Monochrome์ด ์•„๋‹ˆ๋ผ Hierarchical ๋ชจ๋“œ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

 

SharePlay

SharePlay ์‹ฌ๋ณผ ์—ญ์‹œ ์ž๋™ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๋ฉด Monochrome์ด ์•„๋‹ˆ๋ผ Hierarchical ๋ชจ๋“œ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ์ž๋™ ๋ Œ๋”๋ง ๋ชจ๋“œ๊ฐ€ ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ญ์ƒ ์ปจํ…์ŠคํŠธ๋ฅผ ์ž˜ ๋”ฐ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

AirPods Pro์˜ ๊ธฐํ˜ธ์˜ ๊ฒฝ์šฐ ์ž๋™ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด Hierarchical ๋ชจ๋“œ๋กœ ๋ Œ๋”๋ง์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์˜ˆ์‹œ(์ปจํ…์ŠคํŠธ)์—์„œ๋Š” ์‹ฌ๋ณผ์ด ๋งค์šฐ ์ž‘๊ณ  ๋ฐฐ๊ฒฝ๊ณผ ๋Œ€๋น„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ด๋Ÿฐ ํŠน์ • ์ปจํ…์ŠคํŠธ์—์„œ ๊ท ์ผํ•œ ๋ชจ์–‘์„ ์œ„ํ•ด์„œ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ญ์ƒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Variable Color

์ƒ‰์ƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งค์šฐ ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ƒ‰์ƒ์— ์˜์กดํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ƒํ™ฉ์„ ์‚ดํŽด๋ณผ๊นŒ์š”?

  1. ๊ฒฝ๋กœ ๋˜๋Š” ๋ชจ์–‘์ด ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ๊ฐ•๋„๋ฅผ ์ „๋‹ฌํ•  ๋•Œ
  2. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š” ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ

์œ„์™€ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ƒ‰์ƒ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

์˜ฌํ•ด๋ถ€ํ„ฐ๋Š” ๊ฐ€๋ณ€ ์ƒ‰์ƒ์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•˜์—ฌ ์ƒ‰์ƒ ์‚ฌ์šฉ์„ ํ™•๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ฌ๋ณผ์˜ ๋ฒกํ„ฐ ๊ฒฝ๋กœ๋ฅผ ๋ ˆ์ด์–ด๋กœ ์ •๋ ฌํ•˜๊ณ  ํ•ด๋‹น ๋ ˆ์ด์–ด๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ์ƒ‰์ƒ์„ ๋ฐฐํฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ๊ฐ•๋„๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์‹œํ€€์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์ ์€ ๊ฐ€๋ณ€ ์ƒ‰์ƒ์—์„œ ์ผ๋ถ€ ์‹ฌ๋ณผ์—๋Š” ์‹œํ€€์Šค์— ์ฐธ์—ฌํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‹ฌ๋ณผ์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ path๋งŒ opt-in ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์‹ฌ๋ณผ์˜ ๊ฒฝ์šฐ ์‹ฌ๋ณผ์— ํ‘œ์‹œ๋œ ์ƒํƒœ์™€ ๋™๊ธฐํ™” ๋˜๋Š” ๋‚ด์žฅ ์Šฌ๋ผ์ด๋”์™€ ์Œ์„ ์ด๋ฃน๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋”๋ฅผ ์ œ์–ดํ•จ์œผ๋กœ์„œ ๋ณผ๋ฅจ์„ ๋†’์ด๊ฑฐ๋‚˜ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ์ด์— ๋”ฐ๋ผ์„œ ์‹œํ€€์Šค๊ฐ€ ๋ณ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋‚ฎ์€ ๋ณผ๋ฅจ, ์ค‘๊ฐ„ ๋ณผ๋ฅจ, ๋†’์€ ๋ณผ๋ฅจ ์ด 3๊ฐ€์ง€ path๋Š” ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ€๋ณ€ ์ƒ‰์ƒ ๊ธฐ๋Šฅ์„ ์„ ํƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€ ๊ฐ€๋ณ€ ์ƒ‰์ƒ์€ ๊นŠ์ด๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ๋ จ์˜ ๋‹จ๊ณ„ ๋˜๋Š” ๋‹จ๊ณ„๋ฅผ ๊ฐ•์กฐ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

Unified Annotations

*์ฃผ์„ ๋‹ฌ๊ธฐ๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์•„์ง ์‚ฌ์‹ค ์ž˜ ์™€๋‹ฟ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•œ ์‹ฌ๋ณผ์„ ๋” ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ†ตํ•ฉ๋œ ๋ ˆ์ด์–ด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์˜ ์˜ˆ์‹œ๋กœ๋Š” ๋ฒ ์ดํ‚น, ์ปต์ผ€์ดํฌ์— ๊ด€๋ จ๋œ ์‹ฌ๋ณผ์ด ์˜ˆ์‹œ๋กœ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ†ตํ•ฉ ๋ ˆ์ด์–ด(Unified Layer) ๊ตฌ์กฐ ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ ์‹ฌ๋ณผ์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋Š”๋ฐ์š”. (์ฃผ์„์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋‹ค๋ฅธ ์‹ฌ๋ณผ๊ณผ ๋ญ”๊ฐ€ ํ•ฉ์นœ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค.)

 

๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฃผ์„ ๋‹ฌ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1.  ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ z์ˆœ์„œ์˜ ๊ฐœ์š”๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (z ์ˆœ์„œ๋Š” z์ถ•์„ ๋”ฐ๋ผ ๊ธฐํ˜ธ์—์„œ ๊ฒฝ๋กœ์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.)

2. ๊ทธ๋ฆฌ๊ธฐ(Draw), ์ง€์šฐ๊ธฐ(Erase) ๊ฐœ๋…์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ ˆ์ด์–ด๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ๋ฐฉ์‹์„ ์ •์˜ํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

์ž, ์ด์ œ ์ปต ์ผ€์ดํฌ ์‹ฌ๋ณผ์— ์ฃผ์„์„ ๋‹ค๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด๋ฉด ์„คํƒ• ํ”„๋กœ์ŠคํŒ…, ์ปต์ผ€์ดํฌ ๋ฒ ์ด์Šค, ๋ฐฐ์ง€ ๊ทธ๋ฆฌ๊ณ  ํ”Œ๋Ÿฌ์Šค์˜ ๋ชจ์–‘์œผ๋กœ ๋ ˆ์ด์–ด๋ฅผ ๊ฐ๊ฐ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด์–ด์— ํ•„์š”ํ•œ ๋งŒํผ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„คํƒ• ์žฅ์‹(1 layer)์€ ์„ธ ๊ฐœ์˜ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” ๋ ˆ์ด์–ด๋กœ ์ •์˜๋˜๊ณ  ๋‚˜๋จธ์ง€ ๋ ˆ์ด์–ด๋Š” ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๊ฒฝ๋กœ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ชจ์–‘์„ ๊ตฌ์„ฑํ•˜๋ฉด ๋ชจ๋“  ๋ Œ๋”๋ง ๋ชจ๋“œ์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ๊ตฌ์กฐ์— ์ฃผ์„์„ ๋‹ฌ ๋•Œ ๋” ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํ•„์š”์— ๋”ฐ๋ผ ์‹ฌ๋ณผ์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํ•œ ๊ณณ์— ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด์ œ ๋ชจ๋“  ๋ Œ๋”๋ง ๋ชจ๋“œ์— ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ์š”.

 

๋จผ์ € Multicolor๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ชจ์–‘์€ ์„ค์ •์ด ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ƒ‰์ƒ๋งŒ ์„ ํƒํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ‰์ƒ์„ ์„ค์ •ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณผ๊นŒ์š”? ํ”Œ๋Ÿฌ์Šค ๋ฐฐ์ง€์˜ ๊ฒฝ์šฐ ๊ธฐ์กด์— ์ •์˜ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋กœ์ง์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

 

Multicolor๋Š” ์ž˜ ์ •์˜ํ–ˆ์œผ๋ฏ€๋กœ ๋‚˜๋จธ์ง€ Hierarchical, Pallete, Monochrome ๋ชจ๋“œ๋ฅผ ์ •์˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž˜ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋งˆ์ง€๋ง‰ ์ฃผ์ œ์ธ Unified Annotation์€ ์•„์ง ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ฌ๋ณผ์„ ์ •์˜ํ•ด๊ฐ€๋Š” ๊ณผ์ •์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๊ธฐ๋Š” ํ•œ๋ฐ ํ๋ฆ„์€ ์ดํ•ด๊ฐ€ ๋˜์—ˆ์œผ๋‚˜ ๋‚ด์šฉ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ๋Š” ์กฐ๊ธˆ ์–ด๋ ต๋„ค์š”. ์กฐ๊ธˆ ๋” ์ •๋ฆฌ๋ฅผ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.