首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【visionOS】从零开始创建第一个visionOS程序

【visionOS】从零开始创建第一个visionOS程序

作者头像
天天Lotay
发布于 2023-10-15 10:47:54
发布于 2023-10-15 10:47:54
2.2K00
代码可运行
举报
文章被收录于专栏:嵌入式音视频嵌入式音视频
运行总次数:0
代码可运行

前言:本來是看BonjourWeb的,但不自觉被apple visionOS吸引,因为这个概念的产品真的太前沿新颖了。 说不定到时候我会冲一冲~~~先简单学习下嘿嘿

为Apple Vision Pro创建一个新的应用程序和游戏世界。

介绍visionOS

visionOS是苹果Vision Pro的操作系统。将visionOS与熟悉的工具和技术一起使用,为空间计算构建沉浸式应用程序和游戏。

靓仔,如果你想为visionOS开发软件,那前提是需要一台带有苹果芯片的Mac。这样才可以在使用SwiftUI创建新应用,充分利用visionOS中提供的沉浸感。

另外,如果你有一个现有的iPad或iPhone,将visionOS添加到应用程序的中,可以感受到更好更贴近现实的外观与体验,并添加特定于平台的功能,以创建引人注目的体验。

将你的应用扩展到沉浸式空间

从熟悉的基于窗口的体验开始,向人们介绍您的内容。从那里,添加特定于visionOS的SwiftUI场景类型,如卷和空间。这些场景类型让你融入深度,3D对象和身临其境的体验。

使用RealityKit和Reality Composer Pro构建应用程序的3D内容,并使用RealityView显示它。在身临其境的体验中,使用ARKit将你的内容与人的周围环境整合起来。

在页面链接中探索新的交互方式

人们可以通过看着一个元素并轻敲手指来选择它。他们还可以使用特定的手势来缩放、拖动、缩放和旋转对象。SwiftUI提供了对这些标准手势的内置支持,所以你的大部分应用输入都依赖于它们。当你想超越标准手势,使用ARKit创建自定义手势。

潜入特色示例应用程序页面链接

使用Hello World探索所有visionOS应用程序的核心概念。了解如何使用Happy Beam的ARKit检测自定义手势。发现流2D和立体媒体与目的地视频。并学习如何使用RealityKit和现实作曲家Pro与Diorama和Swift Splash构建3D场景。

创建你的第一个visionOS应用

如果你是visionOS的新手,请从新的Xcode项目开始学习平台功能,并熟悉visionOS的内容和技术。当你为visionOS构建应用程序时,SwiftUI是一个很好的选择,因为它可以让你完全访问visionOS的功能。虽然你也可以使用UIKit来构建你的应用程序的一部分,但你需要使用SwiftUI来实现许多平台独有的功能。

为visionOS开发软件需要一台带有苹果芯片的Mac。

在任何SwiftUI应用中,你都可以使用场景将内容放到屏幕上。场景包含要在屏幕上显示的视图和控件。场景还定义了这些视图和控件出现在屏幕上时的外观。在visionOS中,您可以在同一个场景中包含2D和3D视图,并且可以将这些视图呈现在窗口中或作为人的周围环境的一部分。

图1 有窗的场景

图2 场景与窗口和3D对象

从一个新的Xcode项目开始,添加一些特性来熟悉visionOS的内容和技术。在模拟器中运行你的应用程序,以验证你的内容看起来像你期望的那样,并在设备上运行它,以看到你的3D内容栩栩如生。

围绕一个或多个场景组织内容,这些场景管理应用程序的界面。每个场景都包含要显示的视图和控件,场景类型决定内容是采用2D还是3D外观。SwiftUI为visionOS添加了3D场景类型,还为所有场景类型添加了3D元素和布局选项。

创建你的Xcode投影页面链接

在Xcode中选择File >新比;项目。导航到模板选择器的visionOS部分,并选择App模板。当出现提示时,为项目指定一个名称以及其他选项。

当创建一个新的visionOS应用程序时,你可以从配置对话框中配置应用程序的初始场景类型。要在初始场景中主要显示2D内容,请选择Window作为初始场景类型。对于主要的3D内容,选择一个Volume。你也可以添加一个沉浸式场景,将你的内容放置在人物的周围环境中。

当你想要创建3D资产或场景从你的应用程序中显示时,包括一个现实作曲家专业项目文件。使用这个项目文件从原始形状和现有的USDZ资产构建内容。你也可以用它来为你的内容构建和测试自定义的RealityKit动画和行为。

修改现有的窗口页面链接

使用标准的SwiftUI视图构建初始接口。视图为您的界面提供基本内容,您可以使用SwiftUI修饰符自定义视图的外观和行为。例如,.background修饰符在你的内容后面添加了部分透明的色调:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
               .background(.black.opacity(0.8))
        }


        ImmersiveSpace(id: "Immersive") {
            ImmersiveView()
        }
    }
}

在页面链接中处理视图中的事件

许多SwiftUI视图自动处理交互——你所要做的就是提供在交互发生时运行的代码。你也可以在视图中添加SwiftUI手势识别器来处理点击、长按、拖动、旋转和缩放手势。系统会自动将以下类型的输入映射到你的SwiftUI事件处理代码:

这张照片显示的是窗户角落里的控件,以及一个人坐在椅子上,双手放在膝盖上的自上而下的叠加视图。

间接的输入。人的眼睛表明了互动的目标。为了开始互动,人们用一只或两只手同时触摸拇指和食指。额外的手指和手部动作定义手势类型。

图为虚拟3D键盘。这个人的右手敲击着J键。

直接输入。当一个人的手指与屏幕上的项目占据相同的空间时,系统就会报告一个交互。额外的手指和手部动作定义手势类型。

这张照片显示了一个人的手在桌子上的物理键盘上打字。一个虚拟的建议条显示在物理键盘的上方。

键盘输入。人们可以使用连接的鼠标、触控板或键盘与项目交互、触发菜单命令和执行手势。

构建并运行你的app页面链接

在模拟器中构建并运行你的应用,看看它看起来如何。visionOS的模拟器有一个虚拟背景作为你的应用程序内容的背景。使用键盘和鼠标或触控板在环境中导航并与应用程序交互。

点击并拖动应用程序内容下方的窗口栏,以重新定位窗口在环境中的位置。将指针移动到窗口栏旁边的圆圈上,显示窗口的关闭按钮。将光标移动到窗口的一个角落,以将窗口栏变为调整大小控件。

tips:应用程序不能控制窗口在空间中的位置。系统将每个窗口放置在初始位置,并根据与应用程序的进一步交互更新该位置。

将3D内容添加到应用程序中

为您的visionOS应用程序添加深度和维度,并发现如何将您的应用程序内容融入人的周围环境。

带有立体显示器的设备可以让人们以一种感觉更真实的方式体验3D内容。内容似乎具有真正的深度,人们可以从不同的角度观看它,使它看起来就在他们面前。

在为visionOS构建应用程序时,请考虑如何为应用程序的界面添加深度。该系统提供了几种显示3D内容的方法,包括在现有窗口中,在卷中以及在沉浸式空间中。选择最适合你的应用和你提供的内容的选项。

在页面链接中增加传统2D窗口的深度

Windows是应用程序界面的重要组成部分。使用visionOS,应用程序自动获得具有visionOS外观和感觉的材料,完全可调整大小的窗口,间距调整为眼睛和手输入,并为您的自定义控件提供高亮显示调整。

根据需要将深度效果合并到自定义视图中,并使用3D布局选项来安排窗口中的视图。

  • 为视图应用shadow(color:radius:x:y:) visualEffect(_:)修饰符。
  • 当有人使用hoverEffect(_:isEnabled:)修饰符查看视图时,抬起或突出显示视图。
  • 使用ZStack布局视图。
  • 动画视图相关的变化与transform3DEffect(_:)
  • 使用rotation3DEffect(_:axis:anchor:anchorZ:perspective:)修饰符旋转视图。

除了给2D视图更多的深度,你也可以添加静态3D模型到你的2D窗口。Model3D视图加载USDZ文件或其他资产类型,并在窗口中以其固有大小显示它。在你的应用中已经有模型数据的地方使用它,或者可以从网络上下载它。例如,购物应用程序可能会使用这种类型的视图来显示产品的3D版本。

显示动态3D场景使用RealityKitin页面链接

RealityKit是苹果公司用于创建3D模型和场景的技术,你可以在屏幕上动态更新。在visionOS中,使用RealityKit和SwiftUI一起无缝耦合应用程序的2D和3D内容。加载现有的USDZ资产或在Reality Composer Pro中创建场景,为您的内容合并动画,物理,灯光,声音和自定义行为。要在你的应用中使用一个Reality Composer Pro项目,把Swift包添加到你的Xcode项目中,并在你的Swift文件中导入它的模块。

当你准备在界面中显示3D内容时,使用RealityView。这个SwiftUI视图作为你的RealityKit内容的容器,并允许你使用熟悉的SwiftUI技术更新内容。

下面的例子展示了一个使用RealityView来显示3D球体的视图。视图闭包中的代码为球体创建一个RealityKit实体,在球体表面应用纹理,并将球体添加到视图的内容中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 struct SphereView: View {
    var body: some View {
        RealityView { content in
            let model = ModelEntity(
                         mesh: .generateSphere(radius: 0.1),
                         materials: [SimpleMaterial(color: .white, isMetallic: true)])
            content.add(model)
        }
    }
}

当SwiftUI显示你的RealityView时,它会执行你的代码一次来创建实体和其他内容。由于创建实体的成本相对较高,因此视图只运行一次创建代码。当您想要更新实体的状态时,请更改视图的状态并使用update闭包将这些更改应用于内容。下面的例子使用了一个update闭包来改变球体的大小,当缩放属性的值改变时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct SphereView: View {
    var scale = false


    var body: some View {
        RealityView { content in
            let model = ModelEntity(
                         mesh: .generateSphere(radius: 0.1),
                         materials: [SimpleMaterial(color: .white, isMetallic: true)])
            content.add(model)
        } update: { content in
            if let model = content.entities.first {
                model.transform.scale = scale ? [1.2, 1.2, 1.2] : [1.0, 1.0, 1.0]
            }
        }
    }
}

在页面链接中响应与RealityKit内容的交互

处理与RealityKit场景实体的交互:

  • 给你的RealityView附加一个手势识别器,并给它添加targetedToAnyEntity()修饰符。
  • 将一个InputTargetComponent附加到实体或它的父实体上。
  • 向支持交互的RealityKit实体添加碰撞形状。

targetedToAnyEntity()修饰符提供了手势识别器和RealityKit内容之间的桥梁。例如,要识别某人何时拖动实体,可以指定DragGesture并为其添加修饰符。当指定的手势发生在实体上时,SwiftUI执行提供的闭包。

下面的示例将一个点击手势识别器添加到上一个示例中的球体视图中。代码还将InputTargetComponentCollisionComponent组件添加到形状中,以允许交互发生。如果省略这些组件,视图就不会检测到与实体的交互。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct SphereView: View {
    @State private var scale = false


    var body: some View {
        RealityView { content in
            let model = ModelEntity(
                mesh: .generateSphere(radius: 0.1),
                materials: [SimpleMaterial(color: .white, isMetallic: true)])


            // Enable interactions on the entity.
            model.components.set(InputTargetComponent())
            model.components.set(CollisionComponent(shapes: [.generateSphere(radius: 0.1)]))
            content.add(model)
        } update: { content in
            if let model = content.entities.first {
                model.transform.scale = scale ? [1.2, 1.2, 1.2] : [1.0, 1.0, 1.0]
            }
        }
        .gesture(TapGesture().targetedToAnyEntity().onEnded { _ in
            scale.toggle()
        })
    }
}

在volume链接中显示3D内容

volume是一种窗口类型,它在三个维度上增长,以匹配它所包含的内容的大小。窗口和volume都可以容纳2D和3D内容,并且在许多方面是相似的。然而,窗口剪辑的3D内容从窗口表面延伸得太远,因此对于主要是3D的内容来说,volume是更好的选择。

要创建一个volume,添加一个WindowGroup场景到你的应用程序,并将其样式设置为volumetric。这个样式告诉SwiftUI为3D内容创建一个窗口。在卷中包含您想要的任何2D或3D视图。你也可以使用RealityKit添加一个RealityView来构建你的内容。下面的例子创建了一个带有一些气球的静态3D模型的volume,这些气球存储在应用程序的bundle中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            Model3D("balloons")
        }.windowStyle(style: .volumetric)
    }
}

窗口和体积是显示有限的2D和3D内容的方便方式,但你的应用不能控制内容在人们周围的位置。系统在显示时间设置每个窗口和音量的初始位置。系统还增加了一个窗口条,允许用户重新定位窗口或调整窗口大小。

在人周围页面链接中显示3D内容

当你需要更多地控制应用内容的位置时,可以将内容添加到ImmersiveSpace中。沉浸式空间为您的内容提供了一个无限的区域,您可以控制空间内内容的大小和位置。在获得用户许可后,您还可以使用ARKit与沉浸式空间将内容整合到他们的周围环境中。例如,您可以使用ARKit场景重建来获得家具和附近物体的网格,并让您的内容与该网格进行交互。

ImmersiveSpace是一种场景类型,您可以与应用程序的其他场景一起创建。下面的例子展示了一个包含沉浸式空间和窗口的应用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@main
struct MyImmersiveApp: App {
    var body: some Scene {
        WindowGroup() {
            ContentView()
        }


        ImmersiveSpace(id: "solarSystem") {
            SolarSystemView()
        }
    }
}

如果你没有在ImmersiveSpace声明中添加样式修饰符,系统将使用混合样式创建该空间。这种样式将你的内容与显示人物周围环境的直通内容一起显示。其他样式允许你在不同程度上隐藏直通。使用immersionStyle(selection:in:)修饰符指定空间支持的样式。如果指定了多个样式,则可以使用修饰符的选择参数在样式之间切换。

需要注意你在使用混合风格的沉浸式场景中包含了多少内容。占据屏幕很大一部分的内容,即使是部分透明的内容,也会阻止人们看到周围环境中的潜在危险。如果你想让人们沉浸在你的内容中,那就用完整的风格来配置你的空间。有关更多信息,请参阅,在您的应用程序中创建完全沉浸式体验。

请记住设置你在ImmersiveSpace中放置的项目的位置。使用修饰符定位SwiftUI视图,使用转换组件定位RealityKit实体。SwiftUI最初将空间的原点放在人的脚上,但可以根据其他事件改变这个原点。例如,系统可能会移动原点以适应SharePlay活动,该活动显示带有空间角色的内容。如果你需要定位SwiftUI视图和RealityKit实体之间的相对位置,使用RealityView的content参数中的方法执行任何需要的坐标转换。

要显示您的ImmersiveSpace场景,请使用openImmersiveSpace操作打开它,该操作从SwiftUI环境中获得。此操作异步运行,并使用提供的信息来查找和初始化场景。下面的例子展示了一个按钮,它打开带有solarSystem标识符的空格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Button("Show Solar System") {
    Task {
        let result = await openImmersiveSpace(id: "solarSystem")
        if case .error = result {
            print("An error occurred")
        }
    }
}

当一个应用程序呈现一个ImmersiveSpace时,系统会隐藏其他应用程序的内容,以防止视觉冲突。当你的空间可见时,其他应用程序仍然隐藏,但当你关闭它时,它们会返回。如果你的应用程序定义了多个空格,你必须在显示一个不同的空格之前取消当前可见的空格。如果不取消可见空间,那么当您尝试打开另一个空间时,系统将发出运行时警告。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大型软件交付项目注意事项53条
多年前,从事信息技术行业流行自嘲“挨踢”,对于不同的受众,也可以说是“整电脑”或者“做软件”的。后来“互联网”火了,渐渐就变成了“搞互联网”的,尽管最近国内互联网有些颓,中概互联成了中丐互联,但暂时还没有新的替代词汇。如果用英文就很直接,信息技术是“IT”,计算机科学是“CS”,软件工程师是“SE”。我们常说的系统、应用、APP、程序都是“软件”,与硬件相对应。
IT民工闲话
2022/01/10
1.3K0
大型软件交付项目注意事项53条
项目经理如何减少“范围蔓延”?
项目管理中,需求蔓延几乎难以避免,控制不好所产生的后果不言而喻,轻则增加工作量,造成项目延期;重则导致方案不完善,导致交付质量难以保证,使项目失败,因此我们要做好充分的准备。
才聚项目管理
2025/06/30
1420
需求变更当作一个项目来看待,如何处理 ?
需求变更是软件项目一个突出的特点,也是软件项目最为普遍的一个特点。虽然这与人类认识问题的自然规律是一致的,但是频繁而无管理的需求变更非常容易导致复杂、无形的软件在多变的情况下失控,加剧了软件开发过程中的不稳定性,从而造成多方的损失。那么如何对需求变更加以有效的控制和管理,从而保证软件开发的进度、成本和质量,便成为软件开发过程中一个值得思考的问题。
PM吃瓜
2023/03/02
3290
需求变更当作一个项目来看待,如何处理 ?
售前评估的工作量和项目经理评估的有出入,怎么办?
场景:昨天同事H和我沟通,谈到了项目在开展时存在的问题,聊到公司的工作量评估和考核办法。目前工作量在售前的时候,由售前人员评估后经过部门经理的审阅,和业主客户进行共识确认。可是等到项目经理进入的时候,就会发现,售前评估的工作量少了,工作量有增加,该怎么办呢?而且公司对项目的考核机制也包括工作量的考核,考核工作量的基准应该是那个呢?
PM吃瓜
2019/08/12
1K0
4 项目整合,如何把项目做成行业里最靓的仔?人人都是项目经理系列(第4/13篇)
因为游戏行业本身是一个强项目型的组织结构,所以后续的内容上不再明确强调这一点。全部默认都是强项目型的组织架构,即项目经理拥有最高的职权。
放牛的星星
2020/07/10
8920
4 项目整合,如何把项目做成行业里最靓的仔?人人都是项目经理系列(第4/13篇)
5 范围蔓延和镀金,90%的项目死于这两大杀手!人人都是项目经理系列(第5/13篇)
游戏开发中,绝大多数都是使用的瀑布型,这也是我们这个系列主要介绍的方式。 “范(围)进(度)成(本)”是一个项目的重点,而需求则直是项目管理的重中之重,它是进度、成本的大前提。项目经理需要负责确保这些需求在项目管理计划中都有所安排,并且在预算内按时完成,同时尽可能的创造利润和价值。 在游戏开发领域也是一样,你本来做着《王者荣耀》,突然吃鸡火了,项目做一半去做吃鸡模式,自走棋火了,又去做自走棋,捡树枝火了,又去做捡树枝,范围的变更会导致进度和成本遥遥无期。所以防止范围失控是项目经理首要的责任目标。 所以最后,总结一下:项目范围管理包括 做且只做 所需的全部工作。 2 收集需求 收集需求的原始定义:为实现目标而确定、记录并管理相关方的需要和需求的过程。它为定义产品范围和项目范围奠定基础。 不过在细说收集需求之前,还要先提一个过程,叫做规划范围管理计划。这个是什么意思呢?还记得我们上一个章节里有一个过程叫做规划项目管理,其中的输入就来自于各个子的管理计划的输出。 范围管理计划里面没有定义实际的范围,它是一个流程性的文件,主要描述项目是如何定义、制定、监督、控制和确认项目范围的。 举个例子,在游戏开发中,需求一般是由策划负责的。主策划出具了一份需求规范,里面有写到,需求可以由项目里的任何人提出,然后由主策划评定是否有价值,通过后纳入需求池,然后指定具体的策划出具详细的策划案,最后对已经完成策划案的功能进行版本排期开发。 这就是一份最简单的范围管理计划了。但实际项目里,需求增加会更复杂一些,它可能还需要设计需求的优先级评定,指标测量等等,但是无论如何,范围管理计划里面是一定没有实际范围的,它只是流程性或者管理性的文件。 再反过来说需求,需求的概念是根据特定协议或其他强制性规范,产品、服务或成果必须具备的条件或能力。他包括,发起人、客户和其他相关方的 已量化 且 书面记录 的需要和期望。 你是开发,如果有策划拿着手机过来跟你说,你把这个士兵的颜色调成跟它们这个一样的红色。你可以呸他脸上。策划和程序沟通交流,最基本的礼仪就是文档。士兵ID是多少,颜色的色值是多少,有没有和主策划、PM报备过,有没有评估过实现难度,主程又知不知道。当然如果你们关系比较好,他说下午请你喝个奶茶,你调个效果给他看下,倒是可以考虑下。 需求的收集有很多种方式,这里罗列一下: 这里简单说一个我觉得有意思的地方,工作指导和工作跟随。 女朋友要换新电脑,叫你给方案。你说,CPU应该选I9,显卡应该选2080,内存应该要32GX4(确定是给女朋友配还是给自己?),这叫做指导,能够讲清楚,说明白的。但是淘宝下单,全部到了之后怎么组装?你远程视频教了两个小时,结果女朋友把硅胶涂到CPU的针脚面上了。你吓得赶紧过来,10分钟把主机组装好,为了让女朋友看的清楚,又拆掉装了两遍。然后女朋友在你手把手的方式下,自己把电脑装好了(虽然不知道为什么要插那,但是插上好像就对了)。这种方式叫做工作跟随。有些事情你要描述很困难,但是要实操一下就好。 收集需求的最终输出就是需求文件,很多流程管理里叫做用户故事Story。只有明确的(可测量和可测试的)、可跟踪的、完整的、相互协调的,且主要相关方愿意认可的需求,才能作为基准。 大概有如下分类: 比如:
放牛的星星
2020/07/10
1.6K0
十大管理领域可能的问题与解决举措
熟读吧,根据案例中出现的情况,使用不同的话术 可研过程中可能出现的问题 项目经理的技术经验不足 没有正式、书面的新产品研发项目建议书就开展可行性研究工作 新产品研发的可行性研究工作不充分,尤其缺少技术可行性分析和论证 研发过程中对人才缺乏、竟争对手等带来的风险缺乏充分的分析,没有合理有效的应对方案 没有新产品的初步设计方案就开始研发工作 新产品的需求和技术指标不应由领导把关,应进行外部评审 在项目启动前缺少对项目成本的估算或成本估算工作未到位 可行性研究报告缺少必要的内部论证或外部评估环节 没有制订综合、全
用户3148308
2021/05/27
8530
一个合格的项目经理都需要做哪些事情?
之前在公司一直主要负责app研发这块工作,后来公司实行项目责任制,正好谈下来一个比较大的项目(北京新机场新机场安全管控平台),这个平台简单来讲就是集团承包安全部用的一个安全管控平台,因为总包下面有100多家分包公司,整体工程的安全管理是一块很大的工作。
再见孙悟空_
2023/02/10
2920
一个合格的项目经理都需要做哪些事情?
信息系统项目管理案例4
1、版本控制是按照一定规则保存了配置项的所有版本,避免出现配置项版本丢失、混淆的现象;
徐建国
2021/08/03
6540
项目经理生存地图
缺点:周期长,不易变更;风险管理成本较高,在风险分析,进度管理方面,对项目组成员的要求也非常高
yeedomliu
2022/03/31
1.1K0
项目经理生存地图
优秀项目经理必备的8个要素
结合本人这几年在项目管理上的总结和得失,本人认为优秀的项目经理要有责任心、要善于沟通、能引导客户、能预测风险、善于总结、随需应变、善于激励团队、同时也要懂技术。 责任心 作为项目经理首先要有责任心。有了责任心,你会把项目当成自己的孩子,倾注你的全部心血。责任,会驱使你关注项目的进度,千方百计去寻找各种资源,推着项目往前走。甚至吃饭、睡觉,走路、坐车,都想着整个项目团队,想着他们还在加班加点,你可能很自然地给他们带点夜宵、冲杯咖啡,犒劳员工。 有了项目经理做表率,整个团队会鼎力支持工作,士气非常高,技术
葆宁
2020/01/13
1K0
为什么更希望在开发过程中出现需求变更?
在项目开发过程中,项目经理拿到客户需求待办事项后,架构人员开始针对客户功能做架构设计,产品人员针对需求列表做产品原型设计,开发人员根据架构和原型开始做系统概要设计,详细等等设计,测试人员需要写测试用例,开发、提交测试、验收......
用户5166556
2019/11/28
7640
如何应对甲方的需求变更?
如何应对甲方的需求变更?应对方法是拒绝需求变更吗?你能否区分它是真的是需求变更吗?你看过一本书叫做《火球 - uml大战需求分析》吗?
张晓衡
2019/10/08
1.5K0
实施方法论题库
1.最终用户培训工作,建议由() 得,培训后最终用户需参加考试,考试不合格者需继续培训  A
用户10175992
2023/10/17
4490
3 这个我不会,但我还是要BB!项目经理究竟会什么?人人都是项目经理系列(第3/13篇)
除了硬技能之外,项目经理还需要会很多软技能,比如人际关系,人员管理,语言的艺术等等。行使软技能来平衡项目相关方之间的冲突和竞争目标,以达到共识。也就是说,项目经理,不仅要能摆平事情,还要能摆平人。根据你和对方职位的高地,行使各种手段(法律和道德内的)来完成你的目标。 比如,HR招人慢,你们主策脾气暴躁,去diss了人家一顿,结果现在招人更慢了。你作为项目经理,就要动用自己的软技能,请HR喝个奶茶,聊个天,并承包一周的午饭。也许矛盾就解决了(费钱)。 研究表明,成功的项目经理可以持续和有效地使用某些基本技能。研究指出,在由上级和团队成员指定的项目经理中,排名前 2% 的项目经理之所以脱颖而出,是因为他们展现出了超凡的人际关系和沟通技能以及积极的态度。 2.2 组织 组织上的关系需要提升更高一个层次,不再只是简单的管理事与人,而是要维护战略和关系。最简单的,你要协调好跨部门的合作。你需要运维给你增加一台服务器,你需要其他项目给你提供一些关键问题的解决思路,你需要和其他组项目经理协商,对优先的、公共的资源使用的优先顺序。甚至,如果你的开发人力不足,可以找关系好的项目经理借调人力帮助你进行攻坚或者追赶进度。 除此之外,你还要扮演一个强有力的倡导者的角色,项目发起人(制作人)一起处理内部、外部的政治和战略。并根据当前收集的情报时时分析、总结战略走向,并用专业知识给项目发起人提供准确有用的信息,帮助项目加快进度,减少弯路,或者改变方面。 这个方面能深入讲的不多,都是大型战略的问题,我个人还没有成长到这个阶段,所以没有太多能分享的经验。但是我看到过一些以小博大的案例。比如国内一个小厂和一个大厂共同竞争海外某个手游领域的市场,大厂资本雄厚,产品精良,以阵地战的方式在海外扩张,每个市场都花费了大量的财力和人力去应对,数据好看,但是利润却不高。而小厂以游击战的形式扩张,全球同一个版本,然后根据后台数据找出哪个区域的数值增长最快,重点推进该地市场,快速转型和定制化,数据前期难看,但后期能追赶上来,并且用户黏着度高,利润也不俗。 当然,这不一定是项目经理必备的,也不是他一己之力能够完成的,但优秀的项目必然离不开优秀的项目经理。 2.3 其他 除了前面两个比较重要的影响力之外,项目经理还应该时刻关注行业的最新发展趋势,思考每个信息对当前项目造成的影响。又或者是否能够规避预测出的风险,抓住未来可能产生的机遇。 在专业学科领域内,也要持续的做知识传递和整合。给项目成员普及项目管理知识,以便能更好的配合项目工作。或者理解项目当前执行的管理流程的重要性。给公司或者其他项目分享好的流程和知识,促进项目或者公司的完善和成长。 在跨领域范围内,也可以指导或者普及项目管理的方法,担任一些宣传大使,让组织了解项目管理在及时性、质量、创新和资源管理方面的优势。 3 项目经理所需要具备的能力 虽然技术项目管理技能是项目集和项目管理的核心,但 PMI 研究指出,当今全球市场越来越复杂,竞争也越来越激烈,只有技术项目管理技能是不够的。各个组织正在寻求其他有关领导力和商业智慧技能。来自不同组织的成员均提出,这些能力可以有助于支持更长远的战略目标,以实现赢利。为发挥最大的效果,项目经理需要平衡这三种技能。 翻译一下就是,PMI觉得虽然PM的核心能力是技术项目管理,但是在现在全球市场逐渐复杂的情况下,竞争也越来越激烈的前提下,项目经理只掌握技术管理是不够的。 (项目经理人才三角)
放牛的星星
2020/07/10
8940
【PMP】PMBOK第六版项目管理5大过程组10大知识领域知识点汇总
7.在没有对变更进行全面评估之前,不能找CCB,更不能立即实施变更,但是,较小的变更需不要报告给CCB.
心跳包
2020/08/31
2.3K0
【PMP】PMBOK第六版项目管理5大过程组10大知识领域知识点汇总
项目管理是科学还是艺术? 深刻分析
最要紧的就是要明白什么是因地制宜、因势利导,只有最合适的,没有什么叫对的,什么叫错的 项目经理最忌讳的就是完美主义倾向,尤其是做技术人员出身的,喜欢寻找标准答案,耽误了工作进度,也迷茫了自己。
PM吃瓜
2023/03/02
4760
项目管理是科学还是艺术? 深刻分析
需求变更,产品经理的良心也会痛!
作为产品经理,我们一定要理解开发团队及其他团队成员为什么视需求变更为大敌。事实上,需求变更对整个项目都非常有害。
博文视点Broadview
2020/06/11
7220
10分钟带你了解项目经理和产品经理
在公司的组织结构中会有这么两个职位:项目经理(Project Manager)和产品经理(Product Manager),简称PM。
互联网老辛
2020/05/19
2.9K0
10分钟带你了解项目经理和产品经理
敏捷开发中需求变更频繁,如何有效管理?
在敏捷开发中,需求变更是常见的挑战之一,尤其是在面对快速变化的市场需求和客户反馈时。
不脱发的程序猿
2024/12/06
4700
敏捷开发中需求变更频繁,如何有效管理?
推荐阅读
相关推荐
大型软件交付项目注意事项53条
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档