轻松创建个性化桌面宠物
本文还有配套的精品资源,点击获取
简介:桌面宠物应用利用微软 Agent 技术,在用户桌面上引入互动虚拟角色,通过动画、语音识别和用户输入响应等增强交互体验。初版项目可能包含基础的动作和对话,适合初学者探索。技术要点包括角色动画设计、语音交互及用户界面定制。开发者可利用Microsoft Agent SDK与源码深入学习,创建个性化的桌面交互体验。
1. 微软Agent技术介绍
在当今数字化时代,微软Agent技术以其独特的交互方式,成为了增强用户体验的重要工具。Agent技术允许创建和展示具有动画和声音的虚拟角色,这些角色可以用于提供帮助、指导以及与用户进行对话。本章旨在为读者介绍微软Agent技术的基本概念、历史背景和核心功能,为后续章节中角色设计、动画制作和语音交互等内容的学习打下基础。我们将深入探讨如何通过Agent技术实现更为丰富和人性化的用户交互体验。接下来的章节将详细解析这一技术的各个方面,从而帮助读者掌握创建和优化互动虚拟角色的技巧。
2. 互动虚拟角色创建
2.1 角色设计基础
在互动虚拟角色创建中,设计基础是角色能否与用户良好互动的关键。角色设计不仅仅是外观上的设计,更包含了角色性格的定义以及行为模式的构建,这些都将影响到角色的互动性和用户体验。
2.1.1 角色外观设计虚拟角色的外观设计是用户的第一印象,它需要符合设计的目的和角色的设定。外观设计包括角色的基本形状、颜色、服饰以及装饰等。在设计过程中,设计师需要考虑到角色与目标用户的年龄、性别、文化背景等因素。
在设计过程中,可以使用各种绘图软件,如Adobe Photoshop或 Adobe Illustrator ,来创建角色的视觉元素。例如,一个卡通风格的虚拟助手角色可能会有一个大眼睛和一个友好的笑容,而一个专业的虚拟顾问可能会有一个更加成熟和严肃的外观。
2.1.2 角色性格与行为定义角色的性格和行为定义是决定角色如何与用户互动的另一个重要方面。性格设计需要考虑角色的情感表达、反应和语言风格等方面。行为设计则涉及角色在不同场景下的动作和反应模式。
例如,如果创建一个幽默的虚拟角色,其对话应当机智、风趣,能够通过轻松幽默的方式来吸引用户。行为上,这个角色可以设计一些有趣的动作,比如在讲笑话时眨眼睛或者做鬼脸。
设计性格和行为时,最好能够创建详细的文档来定义角色的性格特征和行为准则,这将有助于保持角色在整个应用中的连贯性。
2.2 角色动画制作
动画是虚拟角色充满活力、吸引用户的关键技术。动画不仅增加了角色的吸引力,还能够增强用户的沉浸感和交互体验。角色动画制作包括使用关键帧技术制作角色的动作,以及通过动画技术来同步角色的表情和动作。
2.2.1 关键帧动画技术关键帧动画技术是一种传统的动画制作方式,在虚拟角色动画制作中同样适用。关键帧是动画中时间线上的重要点,是动画变化的起点和终点。在这些关键帧之间,动画软件会自动生成中间帧来模拟平滑的动作变化。
在角色动画制作中,需要确定关键帧来定义角色动作的主要阶段,比如走路、跳跃、挥手等动作。设计师需要在关键帧中详细定义角色的肢体位置、面部表情以及其他细节。然后,动画软件会在这些关键帧之间进行插值计算,生成连续流畅的动作序列。
对于一个动画制作软件,比如 Autodesk Maya或者Blender,设计师需要精通其工具和功能,才能高效地制作出高质量的动画序列。
2.2.2 表情与动作的同步实现表情和动作的同步是虚拟角色动画中的一个高级技术,它能够使角色表现得更为自然和逼真。同步实现的一个常见方法是使用骨骼动画技术(Skeletal Animation)。
骨骼动画允许设计师定义一个虚拟的骨架,并将角色的 模型 附着在这些骨架上。通过移动骨骼的各个关节,设计师可以模拟出复杂的人体动作。表情动画也是通过类似的骨骼系统来实现,只是骨骼的关节被放置在面部。
软件如Blender拥有强大的骨骼动画工具,可以帮助设计师创建出复杂的面部表情和身体动作。在Blender中,设计师可以创建骨骼系统(Armature),然后在骨骼上创建权重( Vertex Weights),以确保模型表面正确地跟随骨架运动。
在实现同步时,一个重要的注意事项是保持动画的连贯性和真实性。这意味着动作和表情需要在时间上精确同步,避免出现动作滞后或过早的动画效果。
在下一章节中,我们将继续深入探讨动画设计的原理和应用,特别是如何在Agent技术中实现高效的动画序列创建与编辑,以及如何将动画与音频同步,来创造更佳的用户体验。
3. 动画设计与实现
3.1 动画原理与技术
动画是赋予虚拟角色生命的重要手段,它通过一系列快速显示的图片或者图形元素来模拟动态效果,从而创造出运动的假象。数字动画与传统动画相比,在技术层面有了质的飞跃。
3.1.1 传统动画与数字动画的区别传统动画通常依赖于绘画技术,通过手绘在透明胶片上绘制每一帧画面,然后将这些胶片连续播放形成动态效果。这种方法耗时费力,制作周期长,修改困难。而数字动画则利用计算机软件来制作,能够提供更快的迭代速度和更灵活的编辑功能,使得动画师可以更加专注于创意实现。
3.1.2 动画制作流程详解数字动画的制作流程分为几个主要阶段: - 剧本和故事板阶段 :确定动画内容、风格、角色设定和基本流程。 - 设计阶段 :包括角色设计、场景设计、色彩风格设定等。 - 建模和绑定阶段 :使用3D软件创建角色和物体模型,以及为模型添加骨骼和控制点。 - 动画阶段 :通过关键帧技术来设定动画的起始帧和结束帧,软件会自动计算中间帧,形成平滑的动画效果。 - 渲染阶段 :对动画进行最终的图像渲染处理,输出成视频文件。 - 后期处理阶段 :包括剪辑、配音、特效添加等,最终生成完整的作品。
3.2 动画在Agent中的应用
在Agent技术中,动画不仅是视觉上的装饰,更是与用户交互的重要组成部分。动画可以传递信息、表达情感,甚至在用户与Agent交互时提供视觉反馈。
3.2.1 动画序列的创建与编辑动画序列是将多个动画帧组合成一个连续的动画条目,可以是一个简单的行走动作,也可以是一个复杂的表情变化。在创建动画序列时,需要考虑动画的流畅性和与角色属性的匹配度。
import animation_module
animation_sequence = animation_module.Sequence()
for i in range(0, 120, 5):
frame = animation_module.Frame()
frame.set_position(x=i*2, y=0)
animation_sequence.add_frame(frame)
animation_sequence.play()
python
3.2.2 动画与音频的同步技术为了让动画看起来更自然,动画中角色的动作通常需要与音频同步。这涉及到音频信号处理,包括识别语音中的关键点,并将这些关键点与动画的动作点进行匹配。
import audio_sync_module
audio_clip = audio_sync_module.AudioClip('path/to/audio.wav')
animation_sequence = animation_module.Sequence('path/to/animation_sequence.json')
synchronization = audio_sync_module.Synchronization(audio_clip, animation_sequence)
synchronization.process()
synchronization.play()
python
在上述的伪代码中,我们使用了一个假定的音频同步处理库来进行音频和动画的同步。实际应用中,开发者会利用专门的工具和库来完成这样的任务。同步过程可能涉及复杂的算法,如声音的节奏检测、音高分析等,以确保动画与音频的流畅匹配。
动画和音频的同步是一个技术密集型的过程,它需要精确的时间控制和细致的设计考量。通过这样的同步技术,Agent角色能够更自然地与用户进行交互,提供更加生动的用户体验。
4. 语音识别与合成
语音技术是现代Agent技术不可或缺的一部分,它允许虚拟角色与用户进行自然语言交流。在这一章中,我们将深入探讨语音识别和语音合成的基础知识、它们在虚拟角色中的应用,以及如何实现高效的语音交互。
4.1 语音技术概述
4.1.1 语音识别技术原理语音识别(Speech Recognition),也称为自动语音识别(Automatic Speech Recognition, ASR),是将人类的语音信号转换成可读文本的技术。这一过程涉及到复杂的信号处理和机器学习算法。通常,一个基本的语音识别系统包含以下步骤:
预处理 :包括去噪、回声消除、端点检测等,为语音信号的特征提取做准备。 特征提取 :将预处理后的语音信号转换为特征向量,常见的有梅尔频率倒谱系数(MFCC)。 声学模型 :利用统计模型(如隐马尔可夫模型HMM)来识别出特征向量对应的音素。 语言模型 :确定在给定上下文中某个音素序列的概率,以正确识别出词语或句子。 后处理 :包括语义理解和语法校验,以提高识别的准确性。语音识别技术的关键挑战在于识别的准确性和速度,以及对不同口音、说话速度和背景噪音的适应性。
4.1.2 语音合成技术原理语音合成(Text-to-Speech, TTS)技术是将文本信息转换为自然语音输出的过程。TTS系统包括以下主要组件:
文本分析器 :负责解析输入文本,包括分词、标注词性、确定语句结构等。 语言模型 :对句子结构进行建模,以预测词序列。 韵律预测 :基于语言模型的结果,预测语句的韵律特征,如语调、音量和语速。 声码器 :将文本分析的结果转换为音频波形,采用的方法有参数合成、单元选择和深度学习合成等。 后处理 :通过滤波和声学调整,进一步改善合成语音的质量。语音合成技术不仅需要模拟人类的发音,还要确保语音的自然度和可懂度。现代TTS系统通过深度学习等技术实现了接近真人发音的自然语音。
4.2 语音与虚拟角色的交互
4.2.1 语音识别在Agent中的实现为了在Agent中实现语音识别,通常需要集成一个现成的语音识别引擎,比如Google Speech-to-Text或Microsoft Azure Speech。以下是实现一个基本语音识别功能的步骤:
选择语音识别服务 :选择一个适合你的需求和预算的语音识别服务。 获取访问权限 :注册并获取API密钥,以便访问语音识别服务。 语音捕捉 :使用麦克风捕捉用户的语音输入。 音频处理 :将捕捉到的音频数据发送给语音识别服务,并接收返回的文本结果。 错误处理和优化 :根据识别结果进行适当的错误处理,并优化识别质量。这里是一个简化的Python代码示例,展示了如何使用Google Speech-to-Text API进行语音识别:
from google.cloud import speech
from google.cloud.speech import enums
from google.cloud.speech import types
import io
client = speech.SpeechClient()
with io.open('input.wav', 'rb') as audio_file:
content = audio_file.read()
audio = types.RecognitionAudio(content=content)
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=16000,
language_code='en-US')
response = client.recognize(config=config, audio=audio)
for result in response.results:
print('Transcript: {}'.format(result.alternatives[0].transcript))
python
此代码段首先初始化Google Cloud Speech客户端,然后读取一个WAV格式的音频文件,并发送给Google的语音识别服务。服务返回的识别结果被打印出来。
4.2.2 语音合成为角色配音的技术细节为了给Agent中的虚拟角色配音,同样需要使用TTS服务。以下是使用TTS服务的基本步骤:
选择TTS服务 :根据需要选择合适的TTS服务。 集成TTS库 :在你的应用中集成TTS库或SDK。 文本处理 :准备要转换成语音的文本,并进行必要的格式化。 生成语音 :通过TTS服务生成语音数据。 播放语音 :将生成的音频数据播放给用户听。以下是一个使用Google Text-to-Speech API的Python 示例代码 :
from google.cloud import texttospeech
client = texttospeech.TextToSpeechClient()
text = "Hello, welcome to our service."
synthesis_input = texttospeech.SynthesisInput(text=text)
voice = texttospeech.VoiceSelectionParams(
language_code='en-US',
ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.MP3)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config)
with open('output.mp3', 'wb') as out:
out.write(response.audio_content)
print('Audio content written to file "output.mp3"')
python
在上述代码中,我们首先设置了文本输入,并指定了语音和音频配置。然后,我们调用了 synthesize_speech 方法来生成语音,最后将音频内容写入MP3文件中。
语音识别与合成是虚拟角色交互的核心部分,能够使角色与用户进行自然语言交流。通过深入理解这些技术原理,并掌握相应的实现技术,可以显著提升Agent的交互体验和用户满意度。
5. 用户输入 响应机制
5.1 响应机制基础
5.1.1 输入事件的捕获与处理用户输入响应机制是虚拟助理的核心组成部分,它直接关系到用户体验的流畅性和满意度。在Agent技术中,输入事件的捕获与处理是实现有效响应的第一步。通常,输入事件包括键盘输入、鼠标点击、触摸屏操作以及语音命令等多种形式。
在微软Agent技术中,输入事件的捕获主要通过编程接口(API)来实现。开发者可以利用这些API编写代码,使得虚拟角色能够对用户的输入做出即时反应。例如,当用户通过鼠标点击虚拟角色时,虚拟角色可以被设置为做出特定的动作或声音反馈。
agentControl1.MouseClick += new MouseEventHandler(agentControl1_MouseClick);
void agentControl1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
agentCharacter.ShowBalloon("Hello!", "You clicked the character!", agentCharacter.BalloonIconInformation);
}
}
csharp
在上面的示例代码中,我们首先为Agent控件的 MouseClick 事件添加了一个事件处理器 agentControl1_MouseClick 。当用户左键点击虚拟角色时,会触发此事件处理器,执行其中的代码。代码段中的 agentCharacter.ShowBalloon 方法用于显示一个信息气泡,作为对用户操作的响应。
5.1.2 响应策略的设计原则设计响应策略时,需要遵循几个重要的设计原则来确保用户体验的连贯性和自然性。首先,响应必须是及时的,避免给用户造成等待的感觉。其次,响应应该与用户的操作直接相关,确保用户能够理解其行为导致的具体结果。最后,响应应该是合适的,既不过度也不过于简单,从而使得用户感觉虚拟角色既智能又体贴。
为了达到这些设计原则,开发者可以通过设计一套清晰的逻辑规则,让虚拟角色根据不同的输入事件以及上下文环境做出恰当的反应。例如,当虚拟角色被点击时,可以先展示一个动画来表示注意到了用户的输入,然后根据用户的指令采取进一步的行动。
5.2 实现高级交互
5.2.1 语境感知交互设计高级交互设计需要考虑语境感知的能力,使得虚拟角色能够理解用户输入的意图,并在不同的上下文中提供合适的响应。这种能力是通过分析用户的输入内容,结合当前的应用环境、用户的行为历史和虚拟角色的知识库来实现的。
实现语境感知交互的一个关键步骤是使用自然语言处理(NLP)技术来解析用户的输入。通过对输入文本进行分词、句法分析和语义理解,可以提取用户的意图并据此作出反应。
from nltk.tokenize import word_tokenize
from nltk import pos_tag
from nltk.chunk import conlltags2tree, tree2conlltags
text = "我想知道明天的天气如何。"
tokens = word_tokenize(text)
tagged = pos_tag(tokens)
grammar = "NP: {<DT>?<JJ>*<NN>}"
cp = nltk.RegexpParser(grammar)
tree = cp.parse(tagged)
print(tree)
python
在上面的Python代码中,我们使用了自然语言处理库NLTK来对用户的输入文本进行分词、词性标注和句法分析。通过句法分析,我们可以对句子结构进行理解,从而推断出用户请求的意图。在实际应用中,这种分析结果将被用来触发相应的响应逻辑。
5.2.2 基于用户行为的动态响应除了语境感知之外,虚拟角色的响应还应当能够根据用户的行为进行动态调整。这意味着虚拟角色需要有能力学习和记住用户的行为模式,并在此基础上预测用户的未来行为,从而提供个性化的服务和更加自然的交互体验。
为了实现这种动态响应,可以应用机器学习和数据挖掘技术来分析用户的行为日志,提取行为特征,并建立预测模型。例如,通过观察用户在不同时间点与虚拟角色交互的方式,可以学习到用户偏好,并据此调整角色的行为和响应策略。
import java.util.HashMap;
public class UserBehaviorAnalysis {
private HashMap<String, Integer> behaviorPatterns = new HashMap<>();
public void updateBehaviorPatterns(String userId, String action) {
if (behaviorPatterns.containsKey(userId)) {
behaviorPatterns.put(userId, behaviorPatterns.get(userId) + 1);
} else {
behaviorPatterns.put(userId, 1);
}
}
public String predictNextAction(String userId) {
if (behaviorPatterns.getOrDefault(userId, 0) % 2 == 0) {
return "提问";
} else {
return "请求帮助";
}
}
}
java
在上述Java代码中,我们定义了一个 UserBehaviorAnalysis 类,用于存储和更新用户的行为模式。通过 updateBehaviorPatterns 方法,我们可以记录用户每次的行为,并在 predictNextAction 方法中根据历史行为模式预测用户的下一个动作。当然,在实际应用中,预测算法会更复杂,可能会用到各种高级的机器学习模型。
6. Agent技术应用实践
6.1 基础应用案例分析
6.1.1 桌面助手的实现桌面助手是Agent技术应用中常见的一个案例。它通常集成在操作系统中,通过虚拟角色与用户进行交互,帮助用户管理日常任务,如提醒、搜索文件、设置闹钟等。
在实现桌面助手时,首先需要定义助手的行为和外观。例如,可以通过Agent技术创建一个友好的虚拟角色,为它设计语音和动作,使其能与用户进行自然的对话和互动。接着,通过编写脚本或程序,赋予助手执行具体任务的能力。在技术层面,桌面助手可能需要利用到操作系统提供的API接口,以实现对系统资源的访问和控制。
以下是一个简单的示例代码,展示如何在Windows环境下创建一个基本的桌面助手:
Dim agent As Object
Set agent = CreateObject("Agent.Control.2")
agent.Visible = True
agent.Characters.Load "your_character_file.aac"
agent.Show
agent.SetPosition 100, 200
agent.Speak "你好,我是你的桌面助手。有什么可以帮助你的吗?"
vb
6.1.2 教育领域的应用实例在教育领域,Agent技术可以用来创建更加生动的教学内容。比如,可以设计一个虚拟的教师角色,通过动画和语音讲解课程内容,帮助学生更好地理解复杂概念。
一个具体的应用实例是开发一款数学教育软件,其中包含一个擅长数学的虚拟角色。该角色可以根据学生的进度和能力,提供个性化的辅导和练习。例如,当学生在解决数学问题时遇到困难时,这个虚拟教师可以提供提示,解释关键步骤,甚至给出类似题目的练习。
软件的开发涉及到角色动画的制作、语音识别技术的集成以及交互逻辑的设计。通过这些技术的结合,可以为学生提供一个互动的学习体验。
6.2 Windows平台下的深入应用
6.2.1 Agent在Windows系统中的集成在Windows系统中集成Agent,可以提升用户的交互体验。例如,可以将Agent作为帮助系统的一部分,或者集成到用户的应用程序中,使软件更加生动有趣。
要实现这一集成,开发者需要熟悉Windows系统提供的接口和Agent相关的API。通过调用这些接口,可以实现虚拟角色的显示、隐藏、移动和交互。这通常涉及到对Windows消息系统和COM组件编程的了解。
一个简单的操作示例是在Windows应用程序中嵌入Agent:
using System.Runtime.InteropServices;
using AgentLib;
IAgentCharacterEx character;
agentManager.GetCharacter("character.aac", out character);
character.Show();
character.Speak("欢迎使用我们的应用程序!");
csharp
6.2.2 开发者视角的Agent应用定制对于开发者而言,Agent技术的应用不仅仅局限于标准功能,还包括定制开发和扩展,以满足特定需求。例如,可以根据业务逻辑开发特定的虚拟角色行为,或者扩展Agent的功能,以实现与应用程序的更深层次集成。
定制开发过程中,开发者需要深入理解Agent SDK的架构和API的使用方法。例如,可以设计特定的事件处理程序来响应用户的输入,并通过编写脚本或代码来实现复杂的交互逻辑。
定制化的示例代码可能如下:
agent.BeforeSpeakEvent += AddressOf OnBeforeSpeak
agent.AfterSpeakEvent += AddressOf OnAfterSpeak
Private Sub OnBeforeSpeak(sender As Object, e As SpeakEventArgs)
End Sub
Private Sub OnAfterSpeak(sender As Object, e As SpeakEventArgs)
End Sub
vb
6.3 图形界面与控件设计
6.3.1 用户界面的设计原则在设计与Agent技术相关的图形用户界面(GUI)时,应遵循一些基本的设计原则,以确保用户可以直观、有效地与虚拟角色和应用程序进行交互。其中包括:
直观性 :界面元素应直观地传达其功能。 一致性 :界面元素和操作逻辑在应用程序中应保持一致性。 效率 :设计应减少用户的操作步骤和思考时间。 容错性 :提供清晰的反馈,帮助用户从错误中恢复。 美观性 :界面设计应美观吸引人。6.4 源码解读与应用定制
6.4.1 解读Agent SDK源码结构Agent SDK提供了一系列的接口和类库,以支持开发者在应用程序中集成和定制虚拟角色。理解SDK的源码结构是进行高效开发的基础。
Agent SDK通常包含以下几个主要组件:
角色管理 :负责角色的加载、显示和隐藏。 动画控制 :管理角色动作的播放和同步。 语音交互 :处理语音输入、输出以及合成。 事件系统 :响应用户的动作,如点击、语音命令等。开发者可以通过阅读SDK文档和代码注释来获取每个组件的详细使用方法。例如,以下是一个角色动画控制的伪代码示例:
agentCharacter.Play("walk", 1);
agentCharacter.Play("wave", 2);
csharp
6.4.2 定制开发与扩展技巧分享在定制开发和扩展Agent应用时,开发者需要掌握一些技巧,以确保应用的性能和用户体验。
使用代理模式 :当Agent角色需要与后端系统交互时,使用代理模式可以有效地管理通信。 应用状态机 :通过状态机来管理角色的行为状态,确保交互逻辑的清晰和高效。 面向对象设计 :合理使用面向对象设计原则,使代码更加模块化和可复用。 性能优化 :在动画和音频处理时注意资源管理,确保应用的流畅性。例如,以下是一个状态机管理Agent角色行为的简化示例:
class AgentStateMachine:
def __init__(self):
self.state = "idle"
def handle_input(self, input):
if input == "user_says_hello":
if self.state == "idle":
self.state = "speaking"
self.character.speak("Hello! How can I help you?")
elif self.state == "speaking":
self.character.speak("Just a moment, please.")
elif input == "user_clicks_help":
if self.state == "idle":
self.state = "presenting_help_topic"
self.character.play_animation("show_help")
state_machine = AgentStateMachine()
python
通过上述内容,我们可以看到Agent技术在实际应用中的多样性和灵活性。无论是在桌面助手、教育应用还是在用户界面设计方面,Agent技术都为开发者提供了一个强大的工具集,以创建更加自然和引人入胜的交互体验。
本文还有配套的精品资源,点击获取
简介:桌面宠物应用利用微软Agent技术,在用户桌面上引入互动虚拟角色,通过动画、语音识别和用户输入响应等增强交互体验。初版项目可能包含基础的动作和对话,适合初学者探索。技术要点包括角色动画设计、语音交互及用户界面定制。开发者可利用Microsoft Agent SDK与源码深入学习,创建个性化的桌面交互体验。
本文还有配套的精品资源,点击获取
相关知识
Ubuntu桌面宠物:轻松点缀你的工作台,体验个性化桌面魅力
2024年桌面宠物软件:打造个性化桌面
打造个性化的虚拟桌宠:开源WPF应用程序VPet
桌面宠物羊下载
元气桌面宠物app下载
元气桌面宠物软件
从零开始打造专属桌面伙伴:DyberPet桌面宠物框架完全攻略
宠物手机壁纸:打造个性化手机桌面?最受欢迎的宠物壁纸推荐
桌面宠物多多
【桌面宠物多多】
网址: 轻松创建个性化桌面宠物 https://www.mcbbbk.com/newsview1366047.html
| 上一篇: 用unity3d可以做一个虚拟宠 |
下一篇: Super Agent Part |
推荐分享
- 1养玉米蛇的危害 28694
- 2狗交配为什么会锁住?从狗狗生 7180
- 3我的狗老公李淑敏33——如何 6236
- 4豆柴犬为什么不建议养?可爱的 4637
- 5南京宠物粮食薄荷饼宠物食品包 4563
- 6中国境内禁养的十大鸟种,你知 4429
- 7湖南隆飞尔动物药业有限公司宠 4259
- 8自制狗狗辅食:棉花面纱犬的美 4257
- 9家养水獭多少钱一只正常 4212
- 10广州哪里卖宠物猫狗的选择性多 4122
