Purpose. Aim of the study is to evaluate the efficacy of the endoscopic (pneumatic dilation) versus surgical (Heller myotomy) treatment in patients affected by esophageal achalasia using barium X-ray examination of the digestive tract performed before and after the treatment. Materials and Methods. 19 patients (10 males and 9 females) were enrolled in this study; each patient underwent a barium X-ray examination to evaluate the esophageal diameter and the height of the barium column before and after endoscopic or surgical treatment. Results. The mean variation of oesophageal diameter before and after treatment is −2.1 mm for surgery and 1.74 mm for pneumatic dilation (OR 0.167, CI 95% 0.02–1.419, and P: 0.10). The variations of all variables, with the exception of the oesophageal diameter variation, are strongly related to the treatment performed. Conclusions. The barium X-ray study of the digestive tract, performed before and after different treatment approaches, demonstrates that the surgical treatment has to be considered as the treatment of choice of achalasia, reserving endoscopic treatment to patients with high operative risk and refusing surgery.
Achalasia is the most frequent primary motor disorder of the esophagus. It is still a rare disease that may occur in both sexes at any age with a prevalence of less than 1/10,000 and with a new cases' incidence of 0.6–1/100,000 citizens/year [ 1 ]. At the base of this disease there is a primitive neuromuscular alteration with a myenteric plexus degeneration causing a pathophysiological disorder consisting in the failure of the lower esophageal sphincter (LES) relaxation during swallowing and the complete loss of peristaltic coordination of the esophagus body [ 2 ]. Dysphagia is the typical symptom, consisting in the difficulty in swallowing food; usually the patients have a very long and often unrelated history [ 3 ]. Other times the patients may show a sudden onset and, rarely, the symptomatology may be “paradoxical,” more pronounced for liquids than solids. Patients may also feel chest pain and regurgitation. Pain is a less frequent symptom and it is usually observed in the early stages of the disease. It is probably related to the smooth muscles contraction of the esophageal body. Regurgitation is the symptom occurring in later stages, when the esophagus is dilated, and may be misdiagnosed as a gastroesophageal reflux disease, leading to diagnosis delay. In this phase, aspirations of food material may be also present leading to “ab ingestis pneumonia” in 12% of cases [ 1 ]. Other times, finally, the only sign of this disease can be a persistent halitosis, due to stagnation of endoesophageal food material. The diagnosis is usually made with X-rays of the digestive tract with barium contrast medium (cm) administration and esophageal manometry [ 4 ]. The therapeutic approach may be pharmacological, endoscopic, and surgical [ 5 ].
Aim of the study is to evaluate the efficacy of the endoscopic (pneumatic dilation) versus surgical (Heller myotomy) treatment in patients affected by esophageal achalasia through the analysis of parameters deriving from the barium X-ray examination, performed before and after surgical or endoscopic treatment.
The study was approved by the Institutional Ethical Committee and conducted according with the ethical principles of the Declaration of Helsinki. Written informed consent was obtained in all patients.
From January 2009 to December 2014 all the patients referring to our radiology departments for radiological evaluation of achalasia, based on previous esophageal manometry, and planned for surgical or endoscopic treatment were investigated about their clinical history and eligible patients were considered for enrolment in this study. Patients with concomitant systemic neurological and/or rheumatologic disease (e.g., Parkinson disease, scleroderma) were excluded.
Each patient underwent barium X-rays evaluation before and after endoscopic or surgical treatment.
The examination was performed with Siemens AXIOM Luminos DRF equipment. Pronto Bario HD (Bracco, Milan, Italy) has been used as contrast medium; each patient received 98,45 g of powder for oral suspension diluted in 90 mL of water and administered as a single bolus prior to the execution of swellings at 0, 1, 2, and 5 minutes ( Figure 1). The esophageal diameter and the height of the barium column were evaluated at the different times after the barium administration. The procedure was successful and was well tolerated in all patients and no complications were reported during the exam execution.
To obtain the logistic model we calculated, for each variable, the mean change was observed after the intervention of the total sample. For each patient were introduced five dichotomous variables (one for each initial variable), assuming value 1 if the reduction found in a particular patient results to be greater than or equal to the average reduction and 0 otherwise. Finally, for each variable, we evaluated the possible relationship with the treatment and we calculated odds ratio.
Fifty-two patients were initially considered for the study, 12 patients were excluded due to the presence of concomitant systemic neurological disease, 17 did not give their consent, and 4 patients were lost to the evaluation after treatment. Nineteen patients were finally enrolled: 10 males and 9 females, age range was 27–76 y.o. for men and 41–75 for women. Eleven patients underwent surgical Heller myotomy treatment and Dor fundoplication and 8 had endoscopic pneumatic dilation treatment performed, due to the high operative risk and refusal of surgical treatment.
The mean variation of esophageal diameter before and after treatment is −2.1 mm for surgery and 1.74 mm for pneumatic dilation (OR 0.167, CI 95% 0.02–1.419, and P: 0.10). Table 1 shows the variation of esophageal diameter and the height of barium column before and after surgical or endoscopic treatment at 0, 1, 2, and 5 minutes after barium administration. Table 2 shows the odds ratio calculated with the logistic regression model to demonstrate postoperation mean changes in relation to the two treatments.
The standard in diagnosing and classifying achalasia is represented by the esophageal manometry documenting the impaired relaxation of the LES and the absence or the alteration of peristaltic waves in the distal esophagus [ 4 , 6 – 9 ].
Upper endoscopy is usually performed to rule out cancer or a peptic stricture and, particularly in patients older than 50 years with dysphagia and weight loss, attention should be paid on the possible presence of a tumor underlying achalasia (pseudoachalasia) [ 10 , 11 ]. Cytohistological samples should always be taken in the cardiac region and in the suspicious areas, to find possible neoplastic degeneration [ 12 , 13 ]. Chest and abdominal CT scan without and with intravenous cm may be helpful in specific, not so common cases [ 9 , 14 ].
The barium X-ray examination allows to confirm the diagnosis and to assess the degree of esophageal dilation, the axis of the esophagus, and the presence of an associated epiphrenic diverticulum [ 6 ], the esophagus appears dilated, aperistaltic, or with uncoordinated peristaltic contractions, sometimes stuffed of food previously ingested and with the “tail mouse” characteristic appearance of the cardiac region [ 6 ].
In the early stages, the only sign may be the endoluminal stagnation of cm, with a progressive increase in the height of the barium column until its pressure causes the forced opening and subsequent rapid emptying of the LES.
The cause for an initial reduction of inhibitory neurons in achalasia is unknown; then etiological therapies still do not exist, but only symptomatic treatments [ 9 ]. These treatments are designed to solve the lack of LES relaxation. The therapeutic approaches may be pharmacological, endoscopic, or surgical. Drug therapy is not very effective, because, even in the early stages of the treatment, the benefits can be seen only in about 2/3 of the patients, with a chronic drug intake that may cause a reduction in the pharmacological effects with tolerance and addiction phenomena; the possible presence of side effects, such as low blood pressure and related headaches, has to be considered [ 15 ]. Some studies have shown a partial efficacy of calcium channel blockers and nitrated derivatives [ 16 ], but the use of these medical therapies should be reserved for those patients who cannot tolerate surgical approaches or to who refuse to use them.
Another type of treatment consists of endoscopic therapy that includes the botulinum toxin injection (BTI) and the pneumatic dilation (PD) [ 17 , 18 ].
BTI is based on a botulinum toxin endoscopic injection in the cardia leading to an inhibition of release of acetylcholine from the myenteric plexus resulting in reduction of smooth muscle contraction of the cardiac region. The effects of a single treatment can persist for six months or more (up to 2-3 years).
The PD consists in the endoscopic introduction, through the mouth, of special dilators, on a metal guide introduced until after the cardia, with the patient maintained under sedation. The dilators consist in cylindrical balloon length of about 12 cm and with variable diameter (2.5 to 4 cm), progressively positioned in the cardiac region. Once placed, it is swollen for 1 minute at 15 PSI pressure. Usually one or two dilations are sufficient to obtain a good result. In 3% of cases, however, there is a cumulative risk of incurring postoperative complications such as tearing and/or perforation of the esophagus. With this method 60–70% of good results may be obtained [ 19 ]. The surgical Heller extramucosal myotomy represents the surgical treatment of choice [ 20 ]. The intervention consists in the longitudinal section of the cardial esophageal smooth musculature for 6-7 cm; then, an antireflux Dor fundoplication is associated, protecting the esophageal mucosa from the gastroesophageal reflux. According to the available literature, good or excellent results may be obtained in up to 90% of the cases [ 21 ].
In our study, the barium X-ray examination of the esophagus ( Figure 1) in patients with achalasia, performed before and after the surgical and endoscopic pneumatic treatments, has shown that the average reduction of barium column height observed in patients surgically treated was more noticeable if compared with those treated with pneumatic endoscopic dilation as well as the reduction in the esophageal caliber. The barium X-ray examination was a good test to evaluate the outcome after surgery or endoscopic dilation, being well tolerated and poorly invasive and allowing objectively defining, with a quantitative analysis of the esophageal caliber and morphology. In conclusion, the surgical treatment represents the treatment of choice of achalasia, giving better and more stable results in comparison with endoscopic pneumatic dilation reserved for patients with high operative risk and who refuse surgery; the esophagus X-ray barium study is the modality of choice in the preoperative and postoperative imaging evaluation of these patients.
The authors declare that there is no conflict of interests regarding the publication of this paper.
X-rays show the height of barium column 0, 1, 2, and 5 minutes after barium oral administration.
Table shows the variation of esophageal diameter and the height of barium column before and after surgical or endoscopic treatment at 0, 1, 2, and 5 minutes after barium administration.
| Surgery | Endoscopy | |||||
|---|---|---|---|---|---|---|
| Myotomy | Pneumatic dilation | |||||
| 11 patients | 8 patients | |||||
| Before | After | Δ | Before | After | Δ | |
| Esophagus diameter (cm) | 5.20 | 3.10 | –2.10 | 4.80 | 6.54 | +1.74 |
| Column baryta height | ||||||
| 0′ | 23.95 | 11.9 | –12.05 | 26.50 | 14.66 | –11.89 |
| 1′ | 21.30 | 7.31 | –14.00 | 25.85 | 12.61 | –13.24 |
| 2′ | 19.64 | 4.84 | –14.79 | 24.42 | 11.56 | –12.86 |
| 5′ | 16.69 | 3.75 | –12.94 | 23.06 | 8.61 | –14.45 |
Table shows OR, CI 95%, and P value calculated with logistic regression model to evaluate statistical significance of the variation between pneumatic dilation and myotomy treatment in patients with diagnosis of achalasia.
| Odd ratio | Confidence interval (95%) | P value | ||
|---|---|---|---|---|
| Reduction > mean | ||||
| Esophagus | 0.167 | 0.02 | 1.419 | 0.1011 |
| Column baryta height | ||||
| 0′ | 0.625 | 0.093 | 4.222 | 0.6297 |
| 1′ | 0.625 | 0.093 | 4.222 | 0.6297 |
| 2′ | 0.429 | 0.062 | 2.972 | 0.3911 |
| 5′ | 0.9 | 0.133 | 6.080 | 0.9139 |


How to become a gazillionaire!
What am I?
What is motivation?
Initial "drive"
Multiple affecting factors
Why should I motivate myself?
Sheeple aren't motivated
It gets easier
How do I motivate myself?

Start small
Surround yourself with positivity
Remove distractions
Plenty of material


bool is_infinite ( float $val )
Returns TRUE if val is infinite (positive or negative), like the result of log(0) or any value too big to fit into a float on this platform.
TRUE if val is infinite, else FALSE.


Change an Account Password
Occasionally, you may have an officer leaving a postion that has forgotten their email account password and it has to be reset so the new officer can access the email. The following steps will walk you through changing an account password.
- Login to the shared account for cPanel. As this is shared do NOT change the Username or Password. see image below
- After logging in, click Email Accounts in the Email section. see image below
- The page opens showing all created email accounts. Click the Manage button for the account whose password is to be reset.
The Activies Officer account<EMAIL_ADDRESS>is shown as an example for this tutorial. see image below
- In the page that opens, enter in the New Password.
Optionally, you can click on the Generate button to have the system gen a new password for you.
When clicked, the eye with the line through it will let you see the password that you are entering. see image below
- After entering the new password, scroll down and click the Update Email Settings button to save it. see image below
- Inform the user of their new password. (Also let them know they should change their password)


The SASS binding of the Expression Listener JavaScript plugin. Plase read those lines to understand how the variables system works.
Listens to the $expression and toggles the $element_class depending on the evaluation result. The expression is evaluated in the context of the current element.
A preprocessed expression.
A class name. If the expression evaluates to true, the class $element_class is added to the current element. Otherwise, $element_class+"_off" is added instead.
Pseudo-breakpoint, valid if $trigger_class is added.
Class.
Pseudo-breakpoint, valid if $trigger_class+"_off" is added.
Class.
Pseudo-breakpoint, valid if $expression is true. This is a shorthand mixin for listen and bp-triggered.
A preprocessed expression.
A class name. If the expression evaluates to true, the class $element_class is added to the current element. Otherwise, $element_class+"_off" is added instead. If this parameter is empty, a unique class name is generated.
Listens to the $expression and sets the focus to the current element whenever the expression evaluates to true.
A preprocessed expression.
Listens to the $expression and sets the $key to $value_expression. The context of the current element is always used.
A preprocessed expression.
A comma-seperated list of preprocessed keys.
A preprocessed expression.


Lorem ipsum dolor sit amet
To get started, log in with your Twitch credentials. Don't worry; Rabbit's Watch never sees your actual Twitch password.


Overview
Data & Methods
Findings
Team
interactive map
Geographical Analyses of GitHub Users
This page focuses on mapping GitHub users around the world.
R
text analysis/regex
matching
interactive map
network analysis


Search for a school, academy or local authority to see the funding they've been allocated.
For example, Lickhill Primary School or 3832470
For example, Camden or 202
PE and sport premium allocations 2018 to 2019 (ODS, 625KB)


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes
Hierarchy For Package com.github.shynixn.petblocks.api.persistence.entity
Package Hierarchies:
All Packages
Interface Hierarchy
com.github.shynixn.petblocks.api.persistence.entity.
AIBase
com.github.shynixn.petblocks.api.persistence.entity.
AIAfraidOfWater
com.github.shynixn.petblocks.api.persistence.entity.
AIAmbientSound
com.github.shynixn.petblocks.api.persistence.entity.
AICarry
com.github.shynixn.petblocks.api.persistence.entity.
AIFeeding
com.github.shynixn.petblocks.api.persistence.entity.
AIFleeInCombat
com.github.shynixn.petblocks.api.persistence.entity.
AIFloatInWater
com.github.shynixn.petblocks.api.persistence.entity.
AIFlyRiding
com.github.shynixn.petblocks.api.persistence.entity.
AIFollowBack
com.github.shynixn.petblocks.api.persistence.entity.
AIFollowOwner
com.github.shynixn.petblocks.api.persistence.entity.
AIGroundRiding
com.github.shynixn.petblocks.api.persistence.entity.
AIMovement
com.github.shynixn.petblocks.api.persistence.entity.
AIFlying
com.github.shynixn.petblocks.api.persistence.entity.
AIHopping
com.github.shynixn.petblocks.api.persistence.entity.
AIWalking
com.github.shynixn.petblocks.api.persistence.entity.
AIWearing
com.github.shynixn.petblocks.api.persistence.entity.
AIHealth
com.github.shynixn.petblocks.api.persistence.entity.
ChatMessage
com.github.shynixn.petblocks.api.persistence.entity.
ChatMessageComponent
com.github.shynixn.petblocks.api.persistence.entity.
GuiIcon
com.github.shynixn.petblocks.api.persistence.entity.
GuiItem
com.github.shynixn.petblocks.api.persistence.entity.
GuiPlayerCache
com.github.shynixn.petblocks.api.persistence.entity.
Particle
com.github.shynixn.petblocks.api.persistence.entity.
PetBlocksPostSave
com.github.shynixn.petblocks.api.persistence.entity.
PetBlocksPreSave
com.github.shynixn.petblocks.api.persistence.entity.
PetPostSpawn
com.github.shynixn.petblocks.api.persistence.entity.
PetPreSpawn
com.github.shynixn.petblocks.api.persistence.entity.
PlayerMeta
com.github.shynixn.petblocks.api.persistence.entity.
Position
com.github.shynixn.petblocks.api.persistence.entity.
PropertyTrackable
com.github.shynixn.petblocks.api.persistence.entity.
PetMeta
com.github.shynixn.petblocks.api.persistence.entity.
Skin
com.github.shynixn.petblocks.api.persistence.entity.
ScriptResult
com.github.shynixn.petblocks.api.persistence.entity.
Sound
Skip navigation links
Overview
Package
Class
Tree
Deprecated
Index
Help
Prev
Next
Frames
No Frames
All Classes


There are several ways to attack redirects whether it is an open direct, the page doesn't check its referrer, or otherwise. Redirects can be dangerous by forwarded the user to an unintended location or even given the user access to a page they normally wouldn't have access to (since the domain is referring itself OR to somewhere external to the domain).


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
K
L
M
N
P
R
S
T
U
V
S
setContent(String)
- Method in class nlp.
MyDocument
setFullTextViewLabelText(String)
- Method in class ui.authormap.
AuthorTopicVizUI
setKeywordViewLabelText(String)
- Method in class ui.authormap.
AuthorTopicVizUI
setScore(double)
- Method in class nlp.
TagWithTFIDF
setTagSet(ArrayList<TagWithTFIDF>)
- Method in class nlp.
MyDocument
setTokenizedContent(String)
- Method in class nlp.
MyDocument
setup(String, String, ArrayList<TagWithTFIDF>)
- Method in class nlp.
MyDocument
setup(Tree, String)
- Method in class ui.treemap.viz.
TreeMap
setupContentAnalysis()
- Method in class ui.authormap.
AuthorTopicVizUI
Sets up author-author matrix with conversation contents.
setupFullTextView()
- Method in class ui.authormap.
AuthorTopicVizUI
Sets us the fullTextView that shows the entire conversations with keywords highlighted
setupKeywordView()
- Method in class ui.authormap.
AuthorTopicVizUI
Sets up the keyword view panel
setupKeywordView()
- Method in class ui.authormap.viz.
AuthorTopicViz
setupSentenceView()
- Method in class ui.authormap.
AuthorTopicVizUI
setupTFIDF()
- Method in class ui.authormap.
AuthorTopicVizUI
Set up for TFIDF for finding keywords
setUserName(String)
- Method in class nlp.
MyDocument
showUI()
- Method in class ui.authormap.
AuthorTopicVizUI
showUI(String)
- Method in class util.
ProgressBarFrame
Show this progress bar with a title
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
H
I
K
L
M
N
P
R
S
T
U
V


Welcome
Computer programming enthusiast (mainly Perl, C and R but also some Python), former/future private pilot (primarily in south of France but I've been known to fly an occasional Yak-18T near Moscow) and always learning new things (woodworking, sewing, electronics, knitting... ).
I'm currently looking for a job in IT, preferably something to do with Data Science and in remote. Until recently I was also an IT student at 42. I'm a life-long learner in Sciences on the Internet (mainly Coursera and EdX).


julien.lecaille (Sat, 09 Jul 2016 10:23:00 GMT):
Has joined the channel.
julien.lecaille (Sat, 09 Jul 2016 10:23:00 GMT):
Communauté des Hauts de France autour des communs de la mobilité
simonsarazin (Sat, 09 Jul 2016 10:23:00 GMT):
Has joined the channel.
julien.lecaille (Sat, 09 Jul 2016 15:11:35 GMT):
Communauté des Hauts de France autour des communs de la mobilité
julien.lecaille (Sat, 09 Jul 2016 15:12:44 GMT):
http://wiki.lafabriquedesmobilites.fr/index.php?title=Communaut%C3%A9_des_acteurs_Hauts_de_France
julien.lecaille (Sat, 09 Jul 2016 15:12:59 GMT):
Communauté des Hauts de France autour des communs de la mobilité http://wiki.lafabriquedesmobilites.fr/index.php?title=Communaut%C3%A9_des_acteurs_Hauts_de_France
transportsdufutur (Mon, 11 Jul 2016 05:37:54 GMT):
Has joined the channel.
transportsdufutur (Mon, 11 Jul 2016 05:38:30 GMT):
excellent ! N'oublions pas i-viatic en haut de France !
simonsarazin (Wed, 13 Jul 2016 10:42:43 GMT):
Oui, rencontre téléphonique en août avec i viatic , ainsi que la MEL (avec la présence de Sebastien Plihon). @julien.lecaille ça peut être top que tu y participes aussi. Je te transfère l'info
julien.lecaille (Wed, 13 Jul 2016 18:16:54 GMT):
Vu merci
julien.lecaille (Fri, 26 Aug 2016 11:10:12 GMT):
Sur le wiki, mise à jour de la page suite à la rencontre téléphonique : http://wiki.lafabriquedesmobilites.fr/index.php?title=Communaut%C3%A9s/Communaut%C3%A9_des_acteurs_Hauts_de_France
julien.lecaille (Fri, 26 Aug 2016 11:40:24 GMT):
transportsdufutur (Sat, 08 Oct 2016 12:03:32 GMT):
Conference à lille sur la mobilité connectée http://jdmc.info/ 16 novembre
transportsdufutur (Sat, 08 Oct 2016 12:03:47 GMT):
Voir comment la Fabrique peut être impliquée ?
transportsdufutur (Sat, 08 Oct 2016 12:04:09 GMT):
A minima mettre a disposition le wiki pour capitaliser.
franck_ouihop (Wed, 12 Oct 2016 09:11:46 GMT):
Has joined the channel.
julien.lecaille (Thu, 13 Oct 2016 09:51:22 GMT):
@transportsdufutur : oui j'ai commencé à faire circuler l'info ... le 16 Novembre normalement je suis à Paris pour Paris Open Source Summit , mais c'est surtout de hackathon intermodalité qui m'intéresse
julien.lecaille (Thu, 13 Oct 2016 09:51:33 GMT):
@franck_ouihop : bienvenue
romain (Fri, 14 Oct 2016 12:47:29 GMT):
Has joined the channel.
anthony_hubert (Fri, 14 Oct 2016 12:47:31 GMT):
Has joined the channel.
aurelief (Fri, 14 Oct 2016 12:49:28 GMT):
Has joined the channel.
aliceric (Fri, 14 Oct 2016 12:51:13 GMT):
Has joined the channel.
laurentcem72 (Fri, 14 Oct 2016 13:02:42 GMT):
Has joined the channel.
ariane (Fri, 14 Oct 2016 13:14:56 GMT):
Has joined the channel.
basrhinmobile (Fri, 14 Oct 2016 14:12:55 GMT):
Has joined the channel.
spignal (Sun, 16 Oct 2016 17:53:49 GMT):
Has joined the channel.
abissi (Mon, 17 Oct 2016 05:20:19 GMT):
Has joined the channel.
amandine (Mon, 17 Oct 2016 06:20:21 GMT):
Has joined the channel.
elodie (Mon, 17 Oct 2016 06:42:10 GMT):
Has joined the channel.
elsapnr2016 (Mon, 17 Oct 2016 07:06:45 GMT):
Has joined the channel.
c.ribeyre (Mon, 17 Oct 2016 07:17:13 GMT):
Has joined the channel.
pdie78 (Mon, 17 Oct 2016 07:17:17 GMT):
Has joined the channel.
delphinex (Mon, 17 Oct 2016 08:07:15 GMT):
Has joined the channel.
louloute33 (Mon, 17 Oct 2016 10:24:52 GMT):
Has joined the channel.
sarah_dolphin (Mon, 17 Oct 2016 11:51:49 GMT):
Has joined the channel.
compiegne (Mon, 17 Oct 2016 12:54:57 GMT):
Has joined the channel.
julien.lecaille (Sat, 22 Oct 2016 09:46:00 GMT):
Hello tout le monde ... pour jeter un coup d'oeil sur ce qui se fait dans notre communauté voir : http://wiki.lafabriquedesmobilites.fr/wiki/Communaut%C3%A9s/Communaut%C3%A9_des_acteurs_Hauts_de_France
julien.lecaille (Sat, 22 Oct 2016 09:46:16 GMT):
Je me lance dans la rédaction du code social de la communauté
julien.lecaille (Sat, 22 Oct 2016 10:13:07 GMT):
Hop : http://wiki.lafabriquedesmobilites.fr/wiki/Communaut%C3%A9s/Communaut%C3%A9_des_acteurs_Hauts_de_France/Code_social
el_cacp (Mon, 24 Oct 2016 09:20:52 GMT):
Has joined the channel.
sophiecharvet (Mon, 24 Oct 2016 15:04:37 GMT):
Has joined the channel.
transportsdufutur (Thu, 27 Oct 2016 13:58:58 GMT):
Un peage positif à Lille ...
http://www.lavoixdunord.fr/65416/article/2016-10-27/deplacements-dans-la-metropole-un-peage-positif-dans-les-clous-0#utm_medium=redaction&utm_source=twitter&utm_campaign=page-fan-lille
transportsdufutur (Thu, 27 Oct 2016 19:33:11 GMT):
Ce projet de péage positif m'inspire. La Fabrique pourrait l'utiliser pour rassembler les parties prenantes et veiller à développer une solution réplicable à la fois pour le territoire et pour les offreurs de solutions de Mobilité/Immobilité. Tout le monde a intérêt à avoir une approche réplicable. J'ai ouvert un pad pour jeter les bases cc @julien.lecaille . Ne serait ce pas un bon exemple pour l'autre voie @nicolas ?
transportsdufutur (Thu, 27 Oct 2016 19:33:13 GMT):
https://annuel.framapad.org/p/peage_positif
nicolas (Thu, 27 Oct 2016 19:33:20 GMT):
Has joined the channel.
transportsdufutur (Mon, 31 Oct 2016 10:30:58 GMT):
on essaye de connecter ces projets à la Fabrique http://openinnovation-engie.com/fr/news/actus/villes-de-demain-et-mobilite-urbaine/3-startups-pour-creer-la-mobilite-zero-carbone-sur-le-campus-de-luniversite-de-lille/3641
julien.lecaille (Thu, 03 Nov 2016 19:45:46 GMT):
Hello, la 1e lettre d'info de la communauté est sortie : http://wiki.lafabriquedesmobilites.fr/wiki/Communaut%C3%A9s/Communaut%C3%A9_des_acteurs_Hauts_de_France/Lettre_d%27info_1
julien.lecaille (Thu, 03 Nov 2016 19:46:20 GMT):
Il y a une première réunion thématique sur les données de la mobilité
Cet atelier serait concentré sur la question de la donnée ouverte en matière de mobilité
A l'ordre du jour :
Type de données de mobilité (données géographiques ou autres)
Données déjà ouvertes / données à ouvrir
Les systèmes produisant de la donnée et les API (interface d'échanges de données entre logiciels)
Les besoins en matière de données ouvertes
Vers une plate-forme régionale des données ouvertes de la mobilité ?
Le focus serait içi plus au niveau de la donnée brute plutôt que vers les logiciels ou les études
La réunion se ferait sur Lille, le 24 ou 25 Novembre
Vos disponibilités pour y participer si cela vous intéresse
http://doodle.com/poll/ezq6ik9g7m9q4kkb
julien.lecaille (Thu, 03 Nov 2016 19:47:02 GMT):
Une autre réunion territoriale concernerait plutôt le Valenciennois
Nous souhaitons mobiliser plusieurs acteurs déjà présent sur le Valenciennois, au moyen d'une visite et d'une réunion au sein de Transalley, écosystème de la mobilité innovante et durable sur le campus de Valenciennes ( http://www.transalley.com/ )
Choix d'une date et d'un créneau dans la semaine du 5 au 9 Décembre
http://doodle.com/poll/fab9gwndv88ebppy
julien.lecaille (Thu, 03 Nov 2016 20:01:18 GMT):
@transportsdufutur : oui y a un gros enjeu sur le péage positif. On essaie d'entrer vraiment en lien avec la MEL (métropole européenne de lille) pour causer des sujets mobilité, mais la prise de contact avance encore lentement
transportsdufutur (Fri, 04 Nov 2016 08:28:19 GMT):
l'objectif de la Fabrique pourrait être de les aider à formaliser le projet, à identifier un ou 2 autres territoires intéressés pour mutualiser l'approche et "offrir" aux fournisseurs de solution plusieurs contextes en même temps.
luc (Fri, 04 Nov 2016 10:21:47 GMT):
Has joined the channel.
rudyanto.linggar (Mon, 07 Nov 2016 00:57:43 GMT):
Has joined the channel.
nfaul (Mon, 07 Nov 2016 18:32:16 GMT):
Has joined the channel.
gerulf_kinkelin (Tue, 08 Nov 2016 17:14:17 GMT):
Has joined the channel.
transportsdufutur (Thu, 10 Nov 2016 09:55:44 GMT):
Room name changed to: region_hautsdefrance by transportsdufutur
caroline_brabant (Thu, 10 Nov 2016 11:34:40 GMT):
Has joined the channel.
tristram_graebener (Mon, 14 Nov 2016 12:46:57 GMT):
Has joined the channel.
timlairet (Mon, 21 Nov 2016 13:14:46 GMT):
Has joined the channel.
v.vincent (Mon, 21 Nov 2016 14:51:53 GMT):
Has joined the channel.
barrau.marie.regine (Mon, 21 Nov 2016 15:02:25 GMT):
Has joined the channel.
emilie_aumont (Tue, 22 Nov 2016 07:15:42 GMT):
Has joined the channel.
gilles_farge (Tue, 22 Nov 2016 08:26:02 GMT):
Has joined the channel.
julien.lecaille (Tue, 22 Nov 2016 10:56:43 GMT):
Hello
Réunion à Lille sur le volet Data des Communs de la Mobilité ce Vendredi après midi
De 14h à 16h au CEREMA
jb (Tue, 22 Nov 2016 11:27:27 GMT):
Has joined the channel.
emiliemauvignier (Tue, 22 Nov 2016 14:40:09 GMT):
Has joined the channel.
null (Tue, 22 Nov 2016 15:20:02 GMT):
Has joined the channel.
tanguy_abel (Tue, 22 Nov 2016 16:54:09 GMT):
Has joined the channel.
xavierbrisbois (Wed, 23 Nov 2016 16:57:46 GMT):
Has joined the channel.
julien.lecaille (Thu, 24 Nov 2016 10:29:29 GMT):
atelier données ouvertes de demain : http://wiki.lafabriquedesmobilites.fr/wiki/Communaut%C3%A9_des_acteurs_Hauts_de_France/Donn%C3%A9es_ouvertes
benoitwiatrak (Thu, 24 Nov 2016 14:27:43 GMT):
Has joined the channel.
nadege_dias (Fri, 25 Nov 2016 08:08:50 GMT):
Has joined the channel.
ltgre (Thu, 01 Dec 2016 07:56:57 GMT):
Has joined the channel.
gilles_vallier (Fri, 02 Dec 2016 11:18:29 GMT):
Has joined the channel.
xavier_bourgeois (Fri, 02 Dec 2016 23:01:58 GMT):
Has joined the channel.
overflorian (Mon, 05 Dec 2016 09:27:05 GMT):
Has joined the channel.
cogerino (Tue, 06 Dec 2016 12:21:31 GMT):
Has joined the channel.
patricia.anayan (Thu, 08 Dec 2016 15:59:03 GMT):
Has joined the channel.
mathilde (Tue, 13 Dec 2016 10:16:41 GMT):
Has joined the channel.
MichelGirard (Tue, 20 Dec 2016 15:29:45 GMT):
Has joined the channel.
florian (Fri, 06 Jan 2017 21:19:24 GMT):
Has joined the channel.
jerome_debeauvoir (Sat, 07 Jan 2017 11:01:44 GMT):
Has joined the channel.
jeremy_bonvoisin (Wed, 11 Jan 2017 14:41:24 GMT):
Has joined the channel.
yvan_martinod (Thu, 12 Jan 2017 17:24:54 GMT):
Has joined the channel.
florent.tio (Fri, 13 Jan 2017 10:07:20 GMT):
Has joined the channel.
CedGau (Fri, 13 Jan 2017 10:32:27 GMT):
Has joined the channel.
fcauchi (Fri, 13 Jan 2017 14:04:48 GMT):
Has joined the channel.
nconforto (Fri, 13 Jan 2017 14:28:29 GMT):
Has joined the channel.
lleca (Tue, 17 Jan 2017 13:01:09 GMT):
Has joined the channel.
polina_knot (Tue, 17 Jan 2017 14:10:03 GMT):
Has joined the channel.
portanicolas (Wed, 18 Jan 2017 21:10:50 GMT):
Has joined the channel.
florence (Fri, 20 Jan 2017 14:01:16 GMT):
Has joined the channel.
armandjo (Fri, 20 Jan 2017 16:09:53 GMT):
Has joined the channel.
rzr (Fri, 27 Jan 2017 09:28:03 GMT):
Has joined the channel.
philippe_orvain (Mon, 30 Jan 2017 08:54:26 GMT):
Has joined the channel.
alexandre_ruiz (Sat, 04 Feb 2017 20:08:17 GMT):
Has joined the channel.
carolinekermarrec (Thu, 09 Feb 2017 08:34:05 GMT):
Has joined the channel.
antoinecarette (Fri, 10 Feb 2017 13:44:40 GMT):
Has joined the channel.
patxi_psa (Fri, 10 Feb 2017 14:08:05 GMT):
Has joined the channel.
sara_guillet (Thu, 16 Feb 2017 10:58:25 GMT):
Has joined the channel.
bbalmana (Mon, 20 Feb 2017 15:53:05 GMT):
Has joined the channel.
david.levalois (Wed, 22 Feb 2017 09:23:16 GMT):
Has joined the channel.
jerome_blanchard (Wed, 22 Feb 2017 14:27:43 GMT):
Has joined the channel.
arnaud_ecov (Wed, 22 Feb 2017 17:01:39 GMT):
Has joined the channel.
xi_wang (Wed, 22 Feb 2017 21:01:50 GMT):
Has joined the channel.
scarsten (Thu, 23 Feb 2017 10:09:04 GMT):
Has joined the channel.
chlong (Fri, 24 Feb 2017 10:23:36 GMT):
Has joined the channel.
francois_puyau (Fri, 24 Feb 2017 17:34:31 GMT):
Has joined the channel.
bruno_bocaert (Tue, 28 Feb 2017 08:55:12 GMT):
Has joined the channel.
luciano (Tue, 07 Mar 2017 10:39:40 GMT):
Has joined the channel.
outzone (Tue, 07 Mar 2017 19:21:31 GMT):
Has joined the channel.
gazelletech (Wed, 08 Mar 2017 12:57:11 GMT):
Has joined the channel.
alexandre_bedos (Fri, 10 Mar 2017 14:17:26 GMT):
Has joined the channel.
vincent_desmas (Fri, 10 Mar 2017 16:35:39 GMT):
Has joined the channel.
transportsdufutur (Mon, 13 Mar 2017 15:22:19 GMT):
Un nouveau site d’infos pratiques regroupant les transports publics du Nord - Pas-de-Calais http://whttp://www.lavoixdunord.fr/node/131678ww.lavoixdunord.fr/node/131678
gerald-sap (Tue, 14 Mar 2017 08:39:43 GMT):
Has joined the channel.
lucasbrazi666 (Tue, 14 Mar 2017 09:24:49 GMT):
Has joined the channel.
transportsdufutur (Tue, 14 Mar 2017 16:40:03 GMT):
Notre récent partenaire canadien IVEO vient à lille jeudi 23 matin et ils souhaiteraient rencontrer via id.
j'espère que vous serez dispo. CC @simonsarazin @bbalmana @s_derville @nicolasdhaussy @julien.lecaille
benoit_sarazin (Thu, 16 Mar 2017 10:59:37 GMT):
Has joined the channel.
richard-hedimag (Fri, 17 Mar 2017 08:38:25 GMT):
Has joined the channel.
florencebordere (Fri, 17 Mar 2017 10:13:19 GMT):
Has joined the channel.
veronique_sanguinetti (Fri, 17 Mar 2017 11:07:20 GMT):
Has joined the channel.
nfrasie (Tue, 21 Mar 2017 09:59:45 GMT):
Has joined the channel.
cquest (Wed, 22 Mar 2017 17:32:02 GMT):
Has joined the channel.
alexandre (Thu, 23 Mar 2017 08:45:45 GMT):
Has joined the channel.
tristan_karos (Sat, 25 Mar 2017 09:13:09 GMT):
Has joined the channel.
xavtack (Sun, 26 Mar 2017 11:41:14 GMT):
Has joined the channel.
aymeric_desbois (Wed, 29 Mar 2017 06:26:31 GMT):
Has joined the channel.
karl_determe (Thu, 30 Mar 2017 07:24:44 GMT):
Has joined the channel.
gdanneels (Thu, 30 Mar 2017 07:46:17 GMT):
Has joined the channel.
fodevaux_stib (Thu, 30 Mar 2017 08:14:05 GMT):
Has joined the channel.
eauquiere (Thu, 30 Mar 2017 19:55:49 GMT):
Has joined the channel.
magali_verdonck (Fri, 31 Mar 2017 08:29:57 GMT):
Has joined the channel.
krunchy (Fri, 31 Mar 2017 13:54:05 GMT):
Has joined the channel.
ccyrille (Fri, 31 Mar 2017 18:09:58 GMT):
Has joined the channel.
josyan13 (Mon, 03 Apr 2017 14:52:41 GMT):
Has joined the channel.
mathemagie (Wed, 05 Apr 2017 12:25:58 GMT):
Has joined the channel.
jerome_tan (Wed, 05 Apr 2017 15:13:39 GMT):
Has joined the channel.
quentin_ingold (Mon, 10 Apr 2017 07:07:01 GMT):
Has joined the channel.
mathieunicaise (Tue, 11 Apr 2017 08:21:12 GMT):
Has joined the channel.
mex (Thu, 13 Apr 2017 11:31:39 GMT):
Has joined the channel.
transportsdufutur (Thu, 13 Apr 2017 11:33:18 GMT):
Amis d'en haut @julien.lecaille @simonsarazin la MEL avance sur le projet de péage positif et étudie avec le CEREMA des boitiers. Le projet de la Fabrique du boitier connecté open source prend ici tout son sens ... cc @nicolas
simonsarazin (Fri, 14 Apr 2017 14:40:47 GMT):
Super intéressant ! Il faut qu'on creuse cela avec @julien.lecaille
transportsdufutur (Fri, 14 Apr 2017 14:57:52 GMT):
idéalement il faudrait que la MEL cofinance (un peu) la production des boitiers et nous donne leurs besoins fonctionnels
transportsdufutur (Fri, 14 Apr 2017 15:25:03 GMT):
d'abord les spécifications => http://wiki.lafabriquedesmobilites.fr/wiki/Appel_%C3%A0_Manifestation_d%27Int%C3%A9ret_Boitier_Open_Source
nicolas (Mon, 17 Apr 2017 14:04:41 GMT):
Oh yes please !!!
cedric_leclaire (Tue, 18 Apr 2017 12:20:50 GMT):
Has joined the channel.
karim_lab_ds (Wed, 19 Apr 2017 07:37:39 GMT):
Has joined the channel.
sandrine_vokaer (Thu, 20 Apr 2017 14:49:33 GMT):
Has joined the channel.
clement_dokit (Thu, 20 Apr 2017 15:02:39 GMT):
Has joined the channel.
pierre_dokit (Thu, 20 Apr 2017 15:14:34 GMT):
Has joined the channel.
gautier_feld (Fri, 21 Apr 2017 08:12:42 GMT):
Has joined the channel.
christianvillum (Tue, 25 Apr 2017 06:14:09 GMT):
Has joined the channel.
yannick_amemavor (Wed, 26 Apr 2017 09:37:07 GMT):
Has joined the channel.
aymeric (Wed, 26 Apr 2017 13:09:09 GMT):
Has joined the channel.
clarabaudez (Wed, 26 Apr 2017 13:14:19 GMT):
Has joined the channel.
pguitton (Thu, 27 Apr 2017 09:39:46 GMT):
Has joined the channel.
cassandrej (Fri, 28 Apr 2017 06:37:36 GMT):
Has joined the channel.
phbonnaud (Wed, 03 May 2017 14:52:55 GMT):
Has joined the channel.
leopold_schihin (Thu, 04 May 2017 10:04:50 GMT):
Has joined the channel.
jpmedioni (Thu, 04 May 2017 13:46:33 GMT):
Has joined the channel.
carolinecorbal (Wed, 10 May 2017 09:36:14 GMT):
Has joined the channel.
frpons22 (Fri, 12 May 2017 09:07:26 GMT):
Has joined the channel.
bjean (Sat, 13 May 2017 15:19:51 GMT):
Has joined the channel.
yasir (Mon, 22 May 2017 19:24:33 GMT):
Has joined the channel.
nicolas.petit (Tue, 23 May 2017 14:23:50 GMT):
Has joined the channel.
vdussault (Thu, 25 May 2017 12:29:30 GMT):
Has joined the channel.
farouk.laimeur (Thu, 25 May 2017 17:01:27 GMT):
Has joined the channel.
nicolas.saunier (Thu, 25 May 2017 18:54:40 GMT):
Has joined the channel.
marc_ducas (Fri, 26 May 2017 11:31:17 GMT):
Has joined the channel.
laurent_chevrot (Fri, 26 May 2017 11:45:12 GMT):
Has joined the channel.
minh_nguyen (Fri, 26 May 2017 15:00:06 GMT):
Has joined the channel.
pier-olivier (Fri, 26 May 2017 15:33:37 GMT):
Has joined the channel.
jbarsoum (Fri, 26 May 2017 18:46:00 GMT):
Has joined the channel.
samuel_morissette (Fri, 26 May 2017 19:33:09 GMT):
Has joined the channel.
davidgabriel (Tue, 30 May 2017 15:32:25 GMT):
Has joined the channel.
sophie_transit (Tue, 06 Jun 2017 17:59:40 GMT):
Has joined the channel.
anthony_lelarge (Fri, 09 Jun 2017 07:41:21 GMT):
Has joined the channel.
thibs (Fri, 09 Jun 2017 13:52:24 GMT):
Has joined the channel.
emmanuel_mussault (Tue, 20 Jun 2017 07:08:53 GMT):
Has joined the channel.
marineimbert (Tue, 20 Jun 2017 23:16:45 GMT):
Has joined the channel.
richard (Tue, 27 Jun 2017 14:36:25 GMT):
Has joined the channel.
ullmann (Fri, 07 Jul 2017 11:20:51 GMT):
Has joined the channel.
gael_queinnec (Fri, 07 Jul 2017 11:38:48 GMT):
Has joined the channel.
ameklou (Sat, 08 Jul 2017 11:09:11 GMT):
Has joined the channel.
xschmaltz (Mon, 10 Jul 2017 16:35:18 GMT):
Has joined the channel.
youcef_amarouche (Tue, 11 Jul 2017 08:22:23 GMT):
Has joined the channel.
ismail17 (Sun, 23 Jul 2017 17:28:33 GMT):
Has joined the channel.
cyprien_bardonnet (Sun, 23 Jul 2017 17:45:59 GMT):
Has joined the channel.
antoinelm (Mon, 24 Jul 2017 06:56:54 GMT):
Has joined the channel.
theo_vital (Mon, 24 Jul 2017 07:43:59 GMT):
Has joined the channel.
rodolphe (Mon, 24 Jul 2017 09:21:31 GMT):
Has joined the channel.
benoit_dechateauvieux (Mon, 24 Jul 2017 18:28:38 GMT):
Has joined the channel.
thibio_ (Tue, 25 Jul 2017 15:44:00 GMT):
Has joined the channel.
arsene_bodereau (Wed, 26 Jul 2017 07:15:07 GMT):
Has joined the channel.
eric_calle (Thu, 27 Jul 2017 20:38:33 GMT):
Has joined the channel.
bruno_civardi (Wed, 02 Aug 2017 07:36:23 GMT):
Has joined the channel.
julien.lecaille (Mon, 07 Aug 2017 10:05:11 GMT):
Il y a une étude avec des boitiers Xee qui commence : http://www.circulaction.com/
julien.lecaille (Mon, 07 Aug 2017 10:05:45 GMT):
on a déjà des liens avec i-viatic et avec le CEREMA ... je vais voir s'il y a moyen de discuter de quelque chose question données ouvertes
julien.lecaille (Mon, 07 Aug 2017 11:12:09 GMT):
Et sinon je participe à un GT sur la mobilité durable avec des acteurs de la MEL : https://framadate.org/3v58Y79SXP7XfORo
transportsdufutur (Tue, 08 Aug 2017 14:59:39 GMT):
Super plein de choses intéressantes !
transportsdufutur (Tue, 08 Aug 2017 15:04:01 GMT):
Sur l'étude boitier il y a effectivement les données ouvertes mais egalement le projet de boitier open source. Nous avions parle de ce sujet avec la mel et cerema qui semblaient intéressés. Il y a un projet à finaliser. A bientôt !
julien.lecaille (Tue, 08 Aug 2017 17:39:39 GMT):
@transportsdufutur : il y a une trace des échanges ? Ce serait une occasion pour moi de retourner voir le Cerema
transportsdufutur (Tue, 08 Aug 2017 20:40:06 GMT):
Sur cette page du wiki http://wiki.lafabriquedesmobilites.fr/wiki/Appel_à_Manifestation_d%27Intéret_Boitier_Open_Source
jprunel (Fri, 25 Aug 2017 13:57:37 GMT):
Has joined the channel.
muriel (Tue, 29 Aug 2017 11:14:15 GMT):
Has joined the channel.
mathildeduran_inddigo (Thu, 31 Aug 2017 08:17:30 GMT):
Has joined the channel.
maukoquiroga (Thu, 31 Aug 2017 16:01:39 GMT):
Has joined the channel.
flaverdiere (Thu, 07 Sep 2017 07:22:32 GMT):
Has joined the channel.
pascalp (Thu, 07 Sep 2017 13:57:49 GMT):
Has joined the channel.
elsa (Thu, 14 Sep 2017 19:09:30 GMT):
Has joined the channel.
thomas.basset (Mon, 25 Sep 2017 11:13:01 GMT):
Has joined the channel.
ksy (Mon, 09 Oct 2017 00:52:21 GMT):
Has joined the channel.
p-olivier.desmurs (Thu, 12 Oct 2017 07:34:18 GMT):
Has joined the channel.
benjamin.martin (Tue, 17 Oct 2017 09:18:37 GMT):
Has joined the channel.
fweill (Wed, 18 Oct 2017 07:01:10 GMT):
Has joined the channel.
transportsdufutur (Wed, 18 Oct 2017 20:59:43 GMT):
Mise à jour de la Communauté des territoires http://wiki.lafabriquedesmobilites.fr/wiki/Communaut%C3%A9_des_Territoires_et_Collectivit%C3%A9s - Des idées / propositions pour les territoires peu denses => http://wiki.lafabriquedesmobilites.fr/wiki/Accompagner_les_territoires_peu_denses
olivier_lozano (Wed, 08 Nov 2017 09:21:15 GMT):
Has joined the channel.
chevrea (Sun, 12 Nov 2017 14:21:59 GMT):
Has joined the channel.
girard.maxime33 (Mon, 20 Nov 2017 22:12:47 GMT):
Has joined the channel.
francois.ehinger (Sat, 25 Nov 2017 22:51:37 GMT):
Has joined the channel.
manuel.chaufrein (Tue, 05 Dec 2017 19:17:39 GMT):
Has joined the channel.
rochedreuxnelson (Sun, 10 Dec 2017 14:47:00 GMT):
Has joined the channel.
restein (Sun, 10 Dec 2017 17:18:32 GMT):
Has joined the channel.
patgendre94 (Mon, 11 Dec 2017 19:23:34 GMT):
Has joined the channel.
jean-michel.favre (Tue, 12 Dec 2017 11:54:31 GMT):
Has joined the channel.
vmichaud (Tue, 12 Dec 2017 16:40:00 GMT):
Has joined the channel.
bruno.carballa (Thu, 14 Dec 2017 09:15:04 GMT):
Has joined the channel.
cm.chesnel.maxime (Tue, 19 Dec 2017 21:46:09 GMT):
Has joined the channel.
paul.nguyen (Fri, 22 Dec 2017 08:45:57 GMT):
Has joined the channel.
Rieul (Fri, 22 Dec 2017 11:18:09 GMT):
Has joined the channel.
chloe.masson (Mon, 22 Jan 2018 08:18:29 GMT):
Has joined the channel.
benoit.beroud (Mon, 29 Jan 2018 16:15:42 GMT):
Has joined the channel.
francois.ferrieux (Wed, 31 Jan 2018 18:49:10 GMT):
Has joined the channel.
isabelle.camillerapp (Sat, 03 Feb 2018 19:37:11 GMT):
Has joined the channel.
bertrand (Mon, 05 Feb 2018 08:49:57 GMT):
Has joined the channel.
julien.lecaille (Tue, 06 Feb 2018 10:03:44 GMT):
@all https://www.facebook.com/events/1792438277443734/
julien.lecaille (Tue, 06 Feb 2018 10:05:19 GMT):
La prochaine session de la communauté locale des Communs de la mobilité aura lieu le Lundi 19 Février, de 10h à 16h, au Mutualab (19 rue Nicolas Leblanc à Lille)
- Matinée : Plénière autour des Communs de la Mobilité avec Gabriel Plassat, initiateur de l'association "La Fabrique des Mobilités"; tour de table des démarches, et intérêt pour les communs
- Repas pris sur place
- Après midi : Ateliers libres dont "Repère mobilité durable"
La réunion est ouverte, mais plutôt à destination des praticiens des communs, des start-up de la mobilité, des chercheurs, des représentants d'institutions ou des militants associatifs ayant déjà une idée de ce que sont les communs ou qui ont envie de découvrir, et présents sur les thématiques de mobilité.
transportsdufutur (Tue, 06 Feb 2018 10:49:20 GMT):
:+1:
anne-sophie.debesses (Fri, 09 Feb 2018 21:06:05 GMT):
Has joined the channel.
ratibahamane (Tue, 13 Feb 2018 17:48:54 GMT):
Has joined the channel.
stephane.lagnel (Fri, 16 Feb 2018 07:37:23 GMT):
Has joined the channel.
julien.lecaille (Mon, 19 Feb 2018 18:43:35 GMT):
Velo, covoiturage, territoires de mobilité et écoles au menu de la rencontre
francois.ferrieux (Mon, 19 Feb 2018 22:10:42 GMT):
Le nouveau paradigme de la "mobilité courante" (comme l'eau courante) est né en Hauts de France . Qui le sait ?.Qui veut en savoir plus ?(http://mobilitecourante.fr)
julien.lecaille (Tue, 20 Feb 2018 06:24:51 GMT):
moi je voudrais en savoir plus !
c.makaya (Wed, 28 Feb 2018 09:19:52 GMT):
Has joined the channel.
juliendelabaca64 (Mon, 12 Mar 2018 10:57:21 GMT):
Has joined the channel.
mhoyez (Tue, 13 Mar 2018 11:05:45 GMT):
Has joined the channel.
denischeminade (Wed, 14 Mar 2018 09:34:48 GMT):
Has joined the channel.
helene.merhand (Fri, 16 Mar 2018 09:02:43 GMT):
Has joined the channel.
Pierre-Xee (Wed, 28 Mar 2018 11:38:52 GMT):
Has joined the channel.
ishan.bhojwani (Wed, 04 Apr 2018 08:18:07 GMT):
Has joined the channel.
mchaufrein (Wed, 18 Apr 2018 08:22:50 GMT):
Has joined the channel.
Rieul (Thu, 16 Jan 2020 10:00:44 GMT):
Has left the channel.
Caubel (Tue, 10 Mar 2020 16:54:31 GMT):
Has joined the channel.
laura.foglia (Tue, 10 Mar 2020 17:10:10 GMT):
Has joined the channel.
Jean.ROBERT (Tue, 10 Mar 2020 17:59:42 GMT):
Has joined the channel.
yann.tremeac (Thu, 12 Mar 2020 12:19:18 GMT):
Has joined the channel.
jerome-poyet (Mon, 16 Mar 2020 14:16:44 GMT):
Has joined the channel.
laurence.mechin (Mon, 16 Mar 2020 14:32:31 GMT):
Has joined the channel.
mireille (Mon, 16 Mar 2020 14:34:06 GMT):
Has joined the channel.
pierre.taillant (Mon, 16 Mar 2020 14:47:08 GMT):
Has joined the channel.
remy.leboennec (Mon, 16 Mar 2020 15:27:46 GMT):
Has joined the channel.
lara.hoelting (Tue, 17 Mar 2020 13:31:27 GMT):
Has joined the channel.
nicolas.lb (Fri, 20 Mar 2020 10:47:49 GMT):
Has joined the channel.
kmog (Fri, 20 Mar 2020 11:55:28 GMT):
Has joined the channel.
lea.chretien (Fri, 20 Mar 2020 15:19:07 GMT):
Has joined the channel.
paul_bridier (Fri, 20 Mar 2020 16:08:59 GMT):
Has joined the channel.
Yao (Fri, 20 Mar 2020 19:07:50 GMT):
Has joined the channel.
cecile.lavernhe (Mon, 23 Mar 2020 09:37:28 GMT):
Has joined the channel.
marc.cottignies (Mon, 23 Mar 2020 10:30:13 GMT):
Has joined the channel.
sandrine.carballes (Mon, 23 Mar 2020 10:50:21 GMT):
Has joined the channel.
Kiki (Mon, 23 Mar 2020 13:05:51 GMT):
Has joined the channel.
louise.kold-taylor (Mon, 23 Mar 2020 18:31:53 GMT):
Has joined the channel.
ClaraB (Sun, 29 Mar 2020 15:05:13 GMT):
Has joined the channel.
emmanuel.poisson-quinton (Mon, 30 Mar 2020 08:54:32 GMT):
Has joined the channel.
Cath (Mon, 30 Mar 2020 18:46:58 GMT):
Has joined the channel.
pony (Wed, 01 Apr 2020 09:23:40 GMT):
Has joined the channel.
salvatore.cimmino (Fri, 03 Apr 2020 13:51:37 GMT):
Has joined the channel.
karine (Sat, 04 Apr 2020 19:51:30 GMT):
Has joined the channel.
camillem (Sun, 05 Apr 2020 18:35:45 GMT):
Has joined the channel.
jonatan.cloutier (Tue, 07 Apr 2020 20:47:35 GMT):
Has joined the channel.
marie-pierre.gendron (Fri, 10 Apr 2020 14:42:05 GMT):
Has joined the channel.
Jesse (Fri, 10 Apr 2020 20:41:11 GMT):
Has joined the channel.
gontrand.dumont (Fri, 10 Apr 2020 20:55:01 GMT):
Has joined the channel.
xavier.massicotte (Fri, 10 Apr 2020 21:00:36 GMT):
Has joined the channel.
clem (Fri, 10 Apr 2020 21:28:10 GMT):
Has joined the channel.
marie.tack (Fri, 10 Apr 2020 21:51:59 GMT):
Has joined the channel.
Ysaia (Sat, 11 Apr 2020 01:32:32 GMT):
Has joined the channel.
ameliepb (Sat, 11 Apr 2020 14:18:08 GMT):
Has joined the channel.
laurent.lewis (Sun, 12 Apr 2020 16:22:41 GMT):
Has joined the channel.
Amelie (Sun, 12 Apr 2020 22:36:33 GMT):
Has joined the channel.
Amelie (Sun, 12 Apr 2020 22:40:11 GMT):
Has left the channel.
maude.lapointe (Mon, 13 Apr 2020 15:33:29 GMT):
Has joined the channel.
melissa.dlf (Mon, 13 Apr 2020 16:04:06 GMT):
Has joined the channel.
eva.murith (Mon, 13 Apr 2020 18:27:03 GMT):
Has joined the channel.
mathieu.couture (Mon, 13 Apr 2020 19:23:57 GMT):
Has joined the channel.
penelope.stuart (Mon, 13 Apr 2020 19:32:10 GMT):
Has joined the channel.
guillaume.fortin (Mon, 13 Apr 2020 19:34:23 GMT):
Has joined the channel.
chloe.fortier.devin (Mon, 13 Apr 2020 19:36:21 GMT):
Has joined the channel.
Romain_Gayet (Mon, 13 Apr 2020 19:37:26 GMT):
Has joined the channel.
nestel.jeremie (Tue, 14 Apr 2020 09:23:55 GMT):
Has joined the channel.
HeleneCauchoix (Tue, 14 Apr 2020 18:50:35 GMT):
Has joined the channel.
marie-helene.beaudry (Tue, 14 Apr 2020 22:35:30 GMT):
Has joined the channel.
mathieu.couture (Wed, 15 Apr 2020 14:12:44 GMT):
Has left the channel.
alexandre g (Fri, 17 Apr 2020 10:04:31 GMT):
Has joined the channel.
test_du_nouveau_bouton (Fri, 17 Apr 2020 13:01:05 GMT):
Has joined the channel.
ju.tav (Fri, 17 Apr 2020 16:34:00 GMT):
Has joined the channel.
Arthur (Fri, 17 Apr 2020 16:43:00 GMT):
Has joined the channel.
Pierre_Lagrandmaison (Mon, 20 Apr 2020 14:48:32 GMT):
Has joined the channel.
diana.borda (Wed, 22 Apr 2020 02:01:20 GMT):
Has joined the channel.
marie-reine.roy (Thu, 23 Apr 2020 13:00:41 GMT):
Has joined the channel.
ValerieM (Thu, 23 Apr 2020 16:47:02 GMT):
Has joined the channel.
melanie.marceau-d (Fri, 24 Apr 2020 15:33:27 GMT):
Has joined the channel.
cynthia.hamel-kropf (Sun, 26 Apr 2020 20:33:46 GMT):
Has joined the channel.
BENOIT_TROUVE (Mon, 27 Apr 2020 06:16:35 GMT):
Has joined the channel.
ali.saidi (Mon, 27 Apr 2020 20:08:17 GMT):
Has joined the channel.
AnneJulie_AB (Mon, 27 Apr 2020 22:22:55 GMT):
Has joined the channel.
alexandre.barreto (Tue, 28 Apr 2020 07:17:02 GMT):
Has joined the channel.
thierry.lachapelle (Tue, 28 Apr 2020 12:27:36 GMT):
Has joined the channel.
clement (Tue, 28 Apr 2020 17:37:13 GMT):
Has joined the channel.
helene.dimanche (Tue, 28 Apr 2020 20:28:58 GMT):
Has joined the channel.
Julie-Scheid (Wed, 29 Apr 2020 14:27:13 GMT):
Has joined the channel.
veloma (Wed, 29 Apr 2020 18:55:38 GMT):
Has joined the channel.
leandre (Wed, 29 Apr 2020 23:06:07 GMT):
Has joined the channel.
camille.jolain (Fri, 01 May 2020 01:54:00 GMT):
Has joined the channel.
johanne.belle-isle (Fri, 01 May 2020 17:07:03 GMT):
Has joined the channel.
RPP-Ysaia-Melanie-Chloe (Fri, 01 May 2020 18:53:45 GMT):
Has joined the channel.
damien.lhouillier (Mon, 04 May 2020 13:59:59 GMT):
Has joined the channel.
tqmn (Mon, 04 May 2020 16:12:37 GMT):
Has joined the channel.
gabriel.plassat (Tue, 05 May 2020 08:14:36 GMT):
Room name changed to: 0-region_hautsdefrance by gabriel.plassat
rzr (Thu, 05 Nov 2020 09:24:35 GMT):
https://wiki.lafabriquedesmobilites.fr/wiki/Véhicule_Libre#2020-11-05_.._06 Bonjour vous invite a un "meeting melting pot" online ces 2 jours si vous voulez partagez des idées autour de developements opensources, software, hardware, ve, cao, iot etc voir les details sur la page wiki


Linda Mary Spear
Democrat
Enrolled Agent, application pending CFO Colorado Certified Public Accountant (CPA - retired)
AS Business Three Rivers Community College, Norwich, CT; BS Financial Accounting University of New Haven, New Haven, CT; CPA (Retired) Colorado; Enrolled Agent since 1985; Fellow National Tax Practice Institute.
80224
None
Donated to Jason Crow; One Colorado.
Englewood Rotary Club; Denver Press Club; National Association of Enrolled Agents; Colorado Association of Enrolled Agents; Colorado Society of CPAs; Be A Tool - day of service.
To create fair division of representation of people by common address, common cultural identity, continuous geographic relationship.
I will create consensus and agreement by being fair and impartial. First, I would want each persons position understood by repeating the question to the speaker. This allows the speaker to hear what she/he said and determine if what they wanted conveyed was indeed conveyed. Once a position is understood then a debate can ensue. All debates must be on the issue and not on the person presenting the issue. I believe that my experience representing taxpayers before the IRS has taught me to listen carefully, reconsider all sides, and then decide the best pursuit of a fair solution for all involved. You may say that is negotiating. Yes. The best negotiators know that fairness is the ultimate deal breaker.
I am a retired Certified Public Accountant (CPA). The training required is all about analytical skills and logic. Book learning only goes so far. Learning to do the analytical work is on the job training. It is a matter of learning how to look at the obvious and not so obvious. Who, what, why, where, and when are elements of determining intent and the means to reach the desired goal. I have used this training representing taxpayers before the Internal Revenue Service, in my work as a CPA and EA, on committees for not-for-profit businesses, and everyday life - married for 52 years - lots of listening required!
Female


--- layout: post status: publish published: true title: I'm a little worried about Mike Quade. author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 5785 wordpress_url: http://ivyenvy.com/?p=5785 date: '2011-07-27 07:45:51 +0000' date_gmt: '2011-07-27 12:45:51 +0000' categories: - Management tags: - Brewers - Mike Quade comments: [] ---
Yesterday, apparently drunk and delusional from the Cubs' three-game winning streak, Mike Quade voiced that he might see the light at the end of the tunnel after over 100 games and the Cubs could work their way into contention in the final 60 games of the season.
"I know we’re on the road, but we’re playing better. We got a bunch of quality starts on the homestand, which we’ll need some more of. And if we get those, we’ve got every right to think we’ve got a real good chance to compete with these guys."
“You know what? It’s a funny game. We might come out of this road trip in real good shape as far as how we play here. If we do, there’s still a lot of baseball left. I take nothing for granted and put nothing past these guys. We won three in a row against Houston. Let’s see if we can win tonight and go from there."
"If we stay in games, and keep ourselves in games with a good start, then I think we have an excellent chance, just look around. The game is about pitching."
"It's an interesting division to be in that situation. What is there, 60 games left? Let's play them and see. I concede nothing. We're going to play, and we'll see what happens. Daunting task.  We haven't played well. But why not?"
The Cubs have won three games in a row. Now they are the only team in baseball that has not won four games in a row. And as exhibited in last night's game, they can still load the bases with no outs and not score a run. I feel bad for the guy for having to manage this team.


Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams
Date: 23 Apr 2021
Location: MS Teams


Kanyam is very famous for organic tea, The places with large tea estates in Ilam which has been famous for the last hundred and forty years are Kanyam and Fikkal. These estates are famous among the national and international tourists as a great place for picnic, sightseeing and taking photographs. Fikkal is also the business center in the area and falls on the Mechi highway on the way to Ilam. ... See more
Antu Danda
The beautiful hill in the district, Antu Danda is one of the best places in Ilam to view the spectacular sight of sunrise, sunset and the Himalayas. This 2,328m high hill overlooks the Terai flatlands, terraced hills of cash crops, tea gardens and thick pine forests. One can also enjoy the views of Mirik, Kurseong and Darjeeling on a bright and clear day. About an hour drive from Pashupatinagar and about three hour drive from Ilam Bazaar takes you to Antu Danda where one can stay at the local homes that offer home-stay facilities in the area..... See more
Mai-Pokhari
The pristine lake amidst the natural forest is surrounded by the thick forest of fir, juniper, birch and pine and accommodates various species of flora and fauna that includes different species of orchids, rhododendron, herbs and rare animals like musk deer, leopard, porcupine and jackal and various birds and rare insects. An annual fair is held every year around the month of October or November as it is considered as the holy abode of Goddess Bhagawati. Mai Pokhari is about half an hour drive from Illam Bazaar about 18km.... See more
Sadakpur
Sadakpur is located at the height of 3,636m on the international Nepal-India borderline and provides panoramic views of the Himalayas like Mt. Kanchanjunga, Mt. Kumbhakarna, Mt. Makalu and Mt. Everest. The forest in this area provides shelter to the rare wildlife like red panda, musk deer and Danphe.. See more
Siddhi Thumka
One of the wonderful places to enjoy the views of sunrise and sunset in Ilam, Siddhi Thumka is located at an altitude of 1800m. The three hour trek from the Ilam Bazaar takes you to this places which provides spectacular views of Terai flatland, the Mahabharat range and the Churia Mountain range..... See more
Totke falls
It is the second-longest waterfall of Nepal with a height of 85 m. Todke Falls lies at an elevation of 1,600 m about 40 m west from Mai Khola or Mai Beni.The place is a major attraction for tourists who come here to take photos of the majestic waterfall which looks like its pouring out from the heavens.Another waterfall in the area is Dhappar Todke falls which lies in the Dhappar area of Mai Majhuwa... See more
Gajur Mukhi
Gajur Mukhi is a famous Hindu religious site in the eastern region of Nepal. This sacred place lies at the height of 500 m near the river banks of the Deumai Khola.
Rumour has it that devotees who visit this holy place will be blessed with a child, whereas speechless will be granted a voice. Gajur Mukhi Devisthan lies about 40 km away from the main Ilam Bazaar. There is huge Mela (fair) held annually on the day of Kartik Purnima (November).... See more
Devi Pathibhara
This temple of Goddess Pathibhara is the most visited holy places in the eastern part of Nepal. It is regarded as a sister temple to the original Pathibhar Devi in Taplejung, and those who can’t afford to visit the original one at 3,794 m can visit this one which lies just above Sunmai.The religious site is located in Hanspokhari and lies just above the Ilam-Mechi highway..... See more
Fikkal Bazzer
Ilam is famous for its tea gardens, and Kanyam and Fikkal have shrubs that have been planted more than 140 years ago. Kanyam is famous amongst both inbound and outbound tourists who come to take photos, sightseeing, and picnic.Fikkal is one of the business centres of Ilam and the hub for tourists arriving from Darjeeling, India. There’s a weekly haat held on Thursdays where local farmers and vendors come to sell their products...... See more


Lorem ipsum, dolor sit amet consectetur adipisicing elit. Sunt perferendis suscipit adipisci neque magnam sit enim, provident vitae alias. Incidunt, quo mollitia. Aut magnam atque repudiandae ab veniam recusandae? Aperiam, sit temporibus veritatis animi porro molestiae obcaecati quo suscipit, eligendi magnam similique adipisci voluptates incidunt in quidem magni quibusdam atque voluptate nulla laboriosam pariatur consequuntur nemo dolor. Ad saepe rerum, quas maiores error distinctio explicabo porro laboriosam asperiores, ducimus nulla velit atque, sapiente eius! Doloremque esse obcaecati perferendis rerum voluptate, molestias porro nam incidunt inventore fugit, ipsum culpa assumenda. Nisi, enim necessitatibus! Nostrum pariatur distinctio repellendus, eligendi delectus quod quasi?
It should be no shocker that a classic is the statistical favorite. Cheese pizza is one of the most popular choices. It will always be a simple, unadorned masterpiece on its own.
PRICES:
When you want to jazz up your cheese pizza with color and texture, veggies are the perfect topping. And you’re only limited by your imagination. Everything from peppers and mushrooms, to eggplant and onions make for an exciting and tasty veggie pizza.
PRICES:
You need pizza crust, pizza sauce, cheese, and pepperoni. Pepperoni is basically an American version of salami. Pepperoni is a meat mixture of beef and pork that has been cured and seasoned with paprika and chili powder. There’s a reason this is one of the most popular types of pizza. Who doesn’t love biting into a crispy, salty round of pepperoni?
PRICES:
Thin crust pizza, topped off with two types of cheese, bacon, ham, pepperoni and hot sausage! If pepperoni just isn’t enough, and you’re looking for a pie with a bit more heft, a meat pizza is a perfect and popular choice. Pile on ground beef and sausage for a hearty meal.
PRICES:
Is a typical Neapolitan pizza, made with San Marzano tomatoes, mozzarella cheese, fresh basil, salt, and extra-virgin olive oil. Deceptively simple. There’s a reason it’s an Italian staple and one of the most popular types of pizza in the country.
PRICES:
Pure Pizza pleasure grilled to perfection. Grilled chicken, green peppers, onions and savoury BBQ sauce. If you love BBQ chicken and you love pizza, why not put them together? This has long been a cult favorite of sports fans and college kids. The chicken slathered over the top of a pie gives it a tangy, sweet flavor that can’t be beaten.
PRICES:
Hawaiian pizza is a classic American-style cheese pizza topped with ham and pineapple. Variations may include bacon in place of or in addition to the ham. Pineapple might not be the first thing that comes to mind when you think pizza. But add in some ham and it creates an unexpectedly solid sweet and salty combination for this type of pizza.
PRICES:
Chicken breast, Buffalo hot sauce, onions and parsley with provolone and American chesses on a cheesy cheddar crus Who says your pizza has to be strictly tomato-sauce based? Branch out with some buffalo sauce on your pie. All its spicy, salty, buttery goodness is a natural pairing for pizza.
PRICES:
Traditionally topped with pepperoni, sausage, bell peppers, onions, and olives, the supreme pizza combines some of the most popular pizza toppings into one delicious slice. ... Some pizzerias also include mushrooms on their supreme pizza, while others include Canadian bacon for added meatiness. When you can’t decide which toppings to get, it’s time for the supreme pizza. The “supreme” refers to the litany of toppings that come scattered on these pies, from sausage to vegetables to pepperoni. And it’s the combination of the flavors that really makes it sing.
PRICES:
It's basically their version of the “Supreme” pizza — a pizza with pepperoni, onions, green peppers, mushrooms, black olives, ham, and Italian sausage. Pretty much every pizza place offers a pizza like this, but with different names from one restaurant to another. And when the supreme just isn’t enough, you’re ready for the works. It’s a step up in heartiness from the supreme. The “works” usually involves a wide variety of veggie toppings including onions, olives, and mushrooms, plus bacon and pepperoni.
PRICES:
Your order will be processed and delivered within one hour of placing.
Make sure you have the total amout for the order during order delivery delivery.
Incase of any comment of complaint, Please reach out to us as fast as possible.
Regards, Management
| Name | Size | Crust | Topping | Total |
|---|---|---|---|---|
Delivery will cost sh. 200
Get your order in less than an hour, Derivered to you by our able Derivery-agents.


{% extends "layout.html" %} {% block content %}
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.


Focus the first element
or click on one
Use
tab, shift-tab, arrows, mouse to navigate
backspace
resets an element
The "
=
" key shows the field/function menu
Result:
Formula:
Account Number:
Birth Date:
Closing Date:
Name:
Requested Amount:
Sub Product:
Credit Card
Auto Loan
Term:


JNote is an extracurricular computer learning reference based on textbooks, past papers, and extracurricular materials. It can be used both for the learning of new computer knowledge and for reviewing existing knowledge. It will solve the problem for you on the way to your success, so that you can prepare for the CAIE standardized test more comprehensively. At present, JNote has achieved a comprehensive coverage of CAIE key knowledge through practice, and has been recognized by computer students.
Say goodbye to boring text and use more vivid animations and pictures to help understanding.
Written on the basis of questions and textbooks over the years
Profound insight and analysis, not knowledge transfer.
Organize typical examples for each unit for practice
ACSL organizes computer science contests and computer programming contests for elementary, junior, and senior high school students.
Resource TBA
A simple web software used to draw mindmap online.
TBA
TBA
TBA
If you would like to join us, help develop a website, or help us better design content, you can contact us here.


Our solar system is more than 4.5 billion years old. It is made up of the 8 planets that orbit around the sun as well as well as their moons, asteroids, and comets. In order to understand the universe we live in, it is important to understand how the solar system was created.
The sun, the center of the universe and the Earth’s main source of energy, has many stages in which it was formed. It is made of mostly Helium and Plasma, and is a large ball of plasma that is made up of charged ions. The enormous amount of energy that powers the star is produced through nuclear fusion, a process in which light nuclei such as Hydrogen combine to create bigger elements. But how did the sun form?
Several billion years ago, a big Hydrogen cloud that contained remains of past dead stars began to collapse under gravity which may have been caused by a supernova explosion in the vicinity of the cloud. As the hydrogen cloud started collapsing, the cloud began to heat up because its potential energy converted into thermal energy.
Over time, a hot inner core began to form called the protostar as it became hotter and denser. The protostar was large enough that the collapse was able to continue and increase in temperature.
Eventually, the temperature of the protostar exceeded 10 million Kelvins which allowed the hydrogen nuclei to start fusing into Helium which is now the Sun’s source of energy output. The protostar became a star and its gravitational pressure reached hydrostatic equilibrium. The equilibrium was attained because the pressure increased along with the temperature and density. Hydrostatic equilibrium is thought to have occurred after 50 million years after the collapse. This stage is known as the sun’s Main Sequence.
A planet is an object that orbits around the sun, is large enough to be round but small enough not to cause thermonuclear fusion, and does not have any surrounding planetesimals. Our solar system has eight planets: Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, and Neptune. As an inhabitant of one of these planets, it is important to understand how they were formed!
The first stage of planetary formation occurs after the formation of the star. The gravitational collapse of a star leads to a formation of a disk shaped cloud of dust and gas that surround the new star, called a nebula. The collapse causes the disk to rotate, and is held together by the gravity of the sun
The gravitational collapse causes the radius of the nebula to decrease. The spinning cloud of dust follows the law of conservation of angular momentum. Since the radius decreased from the collapse, the disk's rotation gains speed, and the angular momentum remains the same. As the nebula collapses, the disk gains speed and flattens.
The disk contains only 0.2% of the remaining mass. The most prevalent elements are :
The temperature and speed of disk particles depend on its radius from the center. Particles closest to the center have high temperature and rotational speed. As radius increases, the temperature and speed decrease. The spinning elements start to condense based on temperature. Rocks and metals condense at greater temperatures, closer to the center of the disk. Gases on the other hand require cooler temperatures, and therefore condense in the outer regions.
As the disk continue to rotate and flatten, the tiny particles begin to collide and stick together, via electromagnetic force, forming small clumps. The clumps gather more surrounding particles as they continue to rotate, growing in size. As the clumps get big enough, it starts to have its own gravity that pulls and attracts smaller particles that surround it, forming small objects that are called “planetismals”. At first, hundreds of planetismals can be formed, all rotating around the disk as they use their gravity to attract small particles and get bigger. However, not all planetismals will end up as planets. Once these objects are big enough, a high speed collision between them would cause them to shatter. However, if they cross paths at slow and steady speed, their gravities would slowly merge them, forming larger objects. This process would continue for millions of years, where some planetismals get smashed, while others keep growing.
As mentioned before, the types of elements at different positions in the disk vary based on the distance from the center, creating planetismals with different properties. Rocky planetismals are formed close to the star, and icy planetismals are formed in outer regions where particles are mostly gas.
Rocky planetismals combine to form rocky planets such as earth and mars. Icy planetismals form Jovian or gas planets far away from the center. Finally, the sun send out a stream of energy called stellar winds. The stellar winds cleared the remaining dust and small particles, and blew off most of the close gases that were surrounding the rocky planets.
The moon was formed 30-50 million years after the solar system was formed. It rotates around the Earth and causes its rise and fall of tides. There are several theories of how the moon was formed. We discuss a couple of them below:
The moon was formed when a mass the size of Mars collided with Earth. Chunks of this mass broke off and were drawn together by gravity into one mass circulating near Earth’s ecliptic plane. This mass become one of Earth’s moon.
The co-formation theory suggests that Earth and its moon formed at the same time when two enormous masses collided. While this theory explains why they are near the same location it does not explain the differences in their density.
Greyscale Bootstrap Template: https://startbootstrap.com/template-overviews/grayscale/


Checkboxes are used to provide a list of options where more than one can be selected. Jump to section
To create a single checkbox, add an input
with a type="checkbox"
attribute and a corresponding label
. If the input
isn't wrapped in its corresponding label
, be sure to set the for
attribute of the label
to match the id
of the input
so they are semantically associated.
For a more compact version that is useful in toolbars and tight spaces, add the data-mini="true"
attribute to the element to create a mini version.
Typically, there are multiple checkboxes listed under a question title. To visually integrate multiple checkboxes into a grouped button set, the framework will automatically remove all margins between buttons and round only the top and bottom corners of the set if there is a data-role="controlgroup"
attribute on the fieldset
.
Checkboxes can also be used for grouped button sets where more than one button can be selected at once, such as the bold, italic and underline button group seen in word processors. To make a horizontal button set, add the data-type="horizontal"
to the fieldset
.
To swap the position of the check icon from the default position on the left, add the data-iconpos="right"
attribute to the fieldset to create a mini version.
To set the theme, add the data-theme
attribute on the fieldset
to the individual checkbox inputs.


{% extends "base.html" %} {% import "_macros.html" as macros %} {% block title %}{{search_term}} | sleepybird{% endblock %} {% block page_content %}
{{current_time}} | Total words in all tweets: ~{{word_count}}
Top 10 Most Frequent Words


Too use this word definition lookup please follow this steps:
Select the english word and press right click.
Select the word lookup and select definitionlookup for definition and synonymlookup for synonym in the menu.
Thanks to
Dictionary.com
Thesaurus.com


{% extends "gridder_base.html" %}{% load humanize %} {% block title %}Server Error | PDFGridder{% endblock %} {% block extrahead %} {% endblock %} {% block content %}
Something went wrong.
Please contact support at<EMAIL_ADDRESS>including the URL of this page.
You can still go back to the homepage.


|
This is clearly the biggest part of this document, as Maya is not very
coder-friendly what extraction is concerned. And I'm not even going into
details...
As a sidenote: Be aware that (AFAIK) any new plugin could break any (more
sophisticated) exporter. In other words: one can never really finish an
exporter, as there might come a new plugin, that forces an update of the
exporter.
Let's start with the struct that will contain the mesh's information:
55: struct Mesh
56: {
57: std::vector<Material> materials;
58: std::string name;
59: std::vector<MPoint> positions;
60: std::vector<MFloatVector> normals;
61: UVs uvs;
62: SkinningData skinningData;
63: std::vector<Vertex> vertices;
64: std::vector<Int3> indices;
65: };
|
The obvious fields are name , vertices , indices
and materials . Each vertex itself has 3 fields, resp. pointing to
an entry in the positions , normals and uvs .
The position-index is also used to index into the
influences -array, which itself is stored in the skinningData .
Most of these entries will be explained in more detail later on. The easiest way of getting all meshes is by iterating over them. The
MItDag -class does just that. Here's an example (this time taken
from meshExtraction.cpp ):
395: for (MItDag dagIt(MItDag::kDepthFirst, MFn::kMesh, &status);
396: !dagIt.isDone();
397: dagIt.next())
398: {
399: MDagPath currentMayaMeshPath;
400: status = dagIt.getPath(currentMayaMeshPath);
401: checkStatus("couldn't access path (dagIt.getPath)");
402:
403: if (!shouldMeshBeExtracted(currentMayaMeshPath))
404: {
405: cout << " ignoring "
406: << currentMayaMeshPath.partialPathName().asChar()
407: << endl;
408: continue;
409: }
410:
411: Mesh currentMesh = extractMesh(currentMayaMeshPath);
412: extractedMeshes.push_back(currentMesh);
413: }
414: return extractedMeshes;
|
MItDag iterates over all Maya-items. Depending on the
parameters it does either a depth-first-, or breadth-first-search. The
additional filter-parameter limits the search to the specified type (in this
case MFn::kMesh ).
We then just need to use the Mesh-function-set MFnMesh to
access each of the found MDagPath s. If the mesh is animated one should put the model into its correct
frame (or its Bind-Pose).
The vertex positions is the most basic information one can extract out of
Maya. As it is needed by Maya itself1, it is quite easy to access the position-information Supposing the mesh is in its correct frame the position-extraction is a
very short:
160: MPointArray mayaPositions;
161: status = mayaMesh.getPoints(mayaPositions, MSpace::kWorld);
|
Again. Extraction is quite easy. However, we don't know yet, how to join
the positions and normals. (No: position[i] does not have
normal[i] as normal). We'll need Vertex-information to do
that.
179: MFloatVectorArray mayaNormals;
180: status = mayaMesh.getNormals(mayaNormals);
|
Every mesh can have several UV-sets, which are accessed by their
name. Furthermore each UV-set is seperated in two arrays: the Us and the
Vs.
Compared to the positions and normals it's slightly longer, but still very
easy: We get all set-names, and iterate over them, extracting all UVs. Seems to be the right moment to introduce the typedef, that will hold
the UVs:
52: typedef std::vector<std::vector<Float2> > UVs;
|
And now the code:
199: MStringArray uvSetNames;
200: status = mayaMesh.getUVSetNames(uvSetNames);
201: checkStatus("couldn't extract UV-names");
202:
203: for (uint32 i = 0; i < uvSetNames.length(); ++i)
204: {
205: cout << " uv-name: " << uvSetNames[i] << endl;
206:
207: MFloatArray us;
208: MFloatArray vs;
209: std::vector<Float2> currentUVSet;
210:
211: status = mayaMesh.getUVs(us, vs, &uvSetNames[i]);
212: result.reserve(us.length());
213: for (uint32 i = 0; i < us.length(); ++i)
214: {
215: Float2 currentUV;
216: currentUV.u = us[i];
217: currentUV.v = vs[i];
218: currentUVSet.push_back(currentUV);
219: }
220: result.push_back(currentUVSet);
221: }
|
In order to describe the skinning-extraction, I need to indroduce the
structs, that will hold the data.
(mesh.hpp ):
22: // the boneIndex references a joint in SkinningData::jointNames
23: struct Influence
24: {
25: uint32 boneIndex; // points to a name in "SkinningData.jointNames"
26: float weight;
27: };
28:
29: typedef std::vector<Influence> Influences;
30:
31:
32: // for every vertex with positionIndex i the weights are in influences[i].
33: // if there aren't any weights for the mesh, the influences-vector is of
34: // size 0. (so don't index blindly into the vector).
35: //
36: // the influences index into the jointNames-vector, which might be
37: // different for every mesh.
38: struct SkinningData
39: {
40: std::vector<std::string> jointNames;
41: std::vector<Influences> influences;
42: };
|
The only not obvious field is the jointNames -vector. We need
this vector, to achieve the mapping between animation-tracks and the
influences: The name is used as identifier for each joint. Rather than
putting the name into every influence, we just index into the
jointNames -vector. Once something touches animation, it starts getting difficult. And
that's true for the skinning-data too. There's no easy way to get to the
skin-cluster associated with the mesh. One could search the input-plugs and
find the skin-cluster from there on. That's the way proposed by greggman on
his site. gpExport (as well as for instance MS's X-Exporter) takes an
easier approach (which is less efficient): For every mesh we iterator over
all dependency-nodes, filtering for skin-clusters. For every found
skin-cluster, we look at all output-connections. If the current mesh is an
output-shape of the skin-cluster, we found our skin-cluster.:
75: for (MItDependencyNodes depNodeIt(MFn::kSkinClusterFilter);
76: !depNodeIt.isDone();
77: depNodeIt.next())
78: {
79: MObject depNodeObject = depNodeIt.item();
80: MFnSkinCluster mayaSkinCluster(depNodeObject, &status);
81: checkStatus("couldn't acces skinCluster");
82:
83: // normally we should cycle through all outputConnections,
84: // and look, if it's our mesh.
85: // the following line is just shorter
86: uint32 shapeIndex =
87: mayaSkinCluster.indexForOutputShape(mayaOutputMeshPath.node(),
88: &status);
89: if (!status)
90: continue; // our mesh is not an output for this skincluster
|
If a skin-cluster was found, we get all influence-object (should be
joints), and store them in the jointNames -array.
100: MDagPathArray influenceObjectPaths;
101: mayaSkinCluster.influenceObjects(influenceObjectPaths, &status);
102: checkStatus("couldn't get influenceObjects");
103: for (uint32 i = 0; i < influenceObjectPaths.length(); ++i)
104: {
105: skinningData.jointNames.push_back(
106: influenceObjectPaths[i].partialPathName().asChar());
107: }
|
Then we get the influences:
111: MObject mayaInputObject =
112: mayaSkinCluster.inputShapeAtIndex(shapeIndex, &status);
113: // numVertices() should be the same for input and output shape.
114: skinningData.influences.resize(mayaOutputMesh.numVertices());
115:
116: // iterate over all points (= components in Maya) and get the
117: // influences (= [boneIndex, weight])
118: uint32 pointCounter = 0;
119: for (MItGeometry geometryIt(mayaInputObject);
120: !geometryIt.isDone();
121: geometryIt.next(), ++pointCounter)
122: {
123: MObject mayaComponent = geometryIt.component();
124: MFloatArray mayaWeightArray;
125: uint32 numInfluences; // is going to be discarded
126:
127: mayaSkinCluster.getWeights(mayaOutputMeshPath,
128: mayaComponent,
129: mayaWeightArray,
130: numInfluences);
|
The important part is the call to getWeights of the
skin-cluster. We iterate over all points (geometryIt ) and get the
skinweights with this function (one by one).
We then finally convert the retrieved weights into a convenient format:
133: for (uint32 j = 0; j < mayaWeightArray.length(); ++j)
134: {
135: // I know: we are working with floats, but Maya has a
136: // function to eliminate weights, that are too small
137: if (mayaWeightArray[j] != 0)
138: {
139: Influence influence;
140: influence.boneIndex = j;
141: influence.weight = mayaWeightArray[j];
142: skinningData.influences[pointCounter]
143: .push_back(influence);
144: }
145: }
|
4.1.5 Triangles and Vertices
|
Triangles and vertices are not immediate to obtain, but the extraction
is straightforward. One has to pass by Maya's faces to get them. One correct
way to do that: using MItMeshPolygon as in the following example:
360: for (MItMeshPolygon polyIt(mayaMeshPath);
361: !polyIt.isDone();
362: polyIt.next())
363: {
364: std::vector<Int3> polyTriangles =
365: extractPolyTriangles(polyIt, vertexOffset);
|
<IP_ADDRESS> Vertices
The positions, normals, etc. aren't yet useful, as we can't relate
them. That's what the vertices are for. As already written, Maya stores its
information in faces, and we need to pass by them. As we don't need the
seperation into faces, we'll just merge all faces of a mesh. The notion of "vertex" itself doesn't exist in Maya. Instead there are
functions, to access all vertex-entries independantly (which makes sense,
as not every vertex contains always the same entries). We are actually
simplifying our life, by using always the same vertex-struct. Here's finally the vertex-extraction method:
282: unsigned int nbVertices = polyIt.polygonVertexCount();
283: for (unsigned int i = 0; i < nbVertices; ++i)
284: {
285: Vertex currentVertex;
286: if (doExtractPositions() || doExtractWeights())
287: currentVertex.positionIndex = polyIt.vertexIndex(i);
288:
289: if (doExtractNormals())
290: currentVertex.normalIndex = polyIt.normalIndex(i);
291:
292: if (doExtractUVs())
293: {
294: MStringArray uvSetNames;
295: mayaMesh.getUVSetNames(uvSetNames);
296: // only the first set, for now.
297: polyIt.getUVIndex(i, currentVertex.uvIndex, &uvSetNames[0]);
298: }
|
<IP_ADDRESS> Triangles
Maya only triangulates individual faces (=polygons), but not complete
meshes. What's slightly more annoying: Maya's triangulation returns
indices for the positions. We want the indices to index into the
face-relative vertices. After all, if we can't get from the triangles to
the vertices, the vertices are pretty useless. The extraction-method isn't very complicated (have a look at the code
for even more comments):
238: MPointArray nonTweakedPositions; // is going to be discarded here
239: MIntArray mayaIndices; // that's what we are looking for
240: polyIt.getTriangles(nonTweakedPositions, mayaIndices);
241: MIntArray polyIndices;
242: polyIt.getVertices(polyIndices);
243: result = convertObjectToPoly(mayaIndices, polyIndices);
244: // finally add the offset to each index
245: for (unsigned int i = 0; i < result.size(); ++i)
246: {
247: Int3& currentTriangle = result[i];
248: currentTriangle.i1 += vertexOffset;
249: currentTriangle.i2 += vertexOffset;
250: currentTriangle.i3 += vertexOffset;
251: }
|
Note, that we are merging all faces (we won't be able to tell from what
face a triangle came frome). And now the conversion-method:
37: uint32 i = 0;
38: while (i < objectIndices.length())
39: {
40: Int3 currentTriangle;
41: for (uint32 j = 0; j < 3; ++j)
42: {
43: int32 indexTarget = objectIndices[i];
44: // search for the corresponding polyIndex
45: uint32 k;
46: for (k = 0; k < polyIndices.length(); ++k)
47: {
48: if (polyIndices[k] == indexTarget)
49: break;
50: }
51: if (k == polyIndices.length()) error("couldn't find poly-Index");
52: currentTriangle.i[j] = k;
53:
54: i++;
55: }
56: triangles.push_back(currentTriangle);
57: }
|
Basically we take every positionIndex (objectIndices[i] ), and
search the corresponding vertex, that has the same positionIndex. This
should give a unique result (as positions are only used once per face).
Although materials are shared between different meshes, gpExport
currently creates new materials for every mesh (in other words: the
materials are duplicated). However, it should be easy to join them again
(if needed). Materials are stored in shaders and the one uses getConnectedShaders on a mesh to get them (materialExtraction.cpp ):
182: mayaMesh.getConnectedShaders(instanceNumber,
183: shaderSets,
184: shaderVertexIndices);
|
Then we iterate over all shaders, and search for surfaceShader -plugs, as they are the nodes containing materials:
122: MFnDependencyNode depNode(shaderSet);
123: MPlug shaderPlug = depNode.findPlug("surfaceShader");
124:
125: if (shaderPlug.isNull()) return materials; // empty vector
126:
127: MPlugArray shaderPlugSources;
128: shaderPlug.connectedTo(shaderPlugSources, true, false);
|
For each connected shader, we get the shader-node, and convert the
contained material-information into a more convenient format (I never
really tested the conversion, but all other exporters I've seen do it this
way.) Furthermore we only extract phong -, blinn - and
lambert -shaders:
134: MPlug currentShaderPlugSource = shaderPlugSources[i];
135: MObject shaderNode = currentShaderPlugSource.node();
136: if (shaderNode.hasFn(MFn::kPhong))
137: fillMaterial<MFnPhongShader>(¤tMaterial,
138: shaderNode,
139: "phong");
140: else if (shaderNode.hasFn(MFn::kBlinn))
141: fillMaterial<MFnBlinnShader>(¤tMaterial,
142: shaderNode,
143: "blinn");
144: else if (shaderNode.hasFn(MFn::kLambert))
145: fillMaterial<MFnLambertShader>(¤tMaterial,
146: shaderNode,
147: "lambert");
|
96: MaterialExtractor::fillMaterial(Material* pMaterial,
97: const MObject& shaderNode,
98: const std::string& shadingType) const
99: {
100: T shader(shaderNode);
101: std::string shadingMode;
102: if (shadingType == "phong")
103: pMaterial->shadingMode = "phong";
104: else // blinn and lambert
105: pMaterial->shadingMode = "gouraud";
106:
107: pMaterial->ambient = shader.ambientColor();
108: pMaterial->diffuse = shader.diffuseCoeff() * shader.color();
109: pMaterial->selfIllumination = shader.incandescence();
110:
111: pMaterial->shininess = getShininess(shader);
|
getShininess is parametrized by the type, and returns an
appropriate value for each shader-type.
Finally gpExport extracts the textures:
37: MFnDependencyNode shaderDepNode(shaderPlugSource.node());
38:
39: for (MItDependencyGraph shaderGraphIt(shaderPlugSource,
40: MFn::kFileTexture,
41: MItDependencyGraph::kUpstream);
42: !shaderGraphIt.isDone();
43: shaderGraphIt.next())
44: {
45: MObject shaderTextureNode = shaderGraphIt.thisNode();
46: MFnDependencyNode mayaTexture(shaderTextureNode);
47:
48: MString textureFile;
49: mayaTexture.findPlug("fileTextureName").getValue(textureFile);
|
Animation is way more complicated than static information. One
difficulty lies in the fact, that people need different
animation-data. Some need the positions at every frame, some want
skeleton-transformations at each frame, some want them just at
key-frames, etc. gpExport only extracts skeleton-keyframes, but the used
methods should be applicable to other extractions. Also: the
gpExport 's extraction is not complete. I already found
examples, where nothing got extracted... (feel free to submit
patches;)
At Wootsoft we used the same animation for different skeletons,
and the extraction is therefore completely split up (which is not
really unreasonable anyways).
In order to export the mesh and skeleton correctly, the model
needs to be put into its bind-pose first. Ideally the exporter
should undo this modification:). This should have been easy, but was one of the most difficult
tasks of the exporter: there's no easy way to get the bind-pose
matrix. First thing to do, to go into bind-pose: turn the inverse
kinematic off bindPoseTool.cpp :
132: MIkSystem::setGlobalSnap(false);
133: MIkSystem::setGlobalSolve(false);
|
We then run over all joints, find the bind-pose matrix, and
put the joint into its initial transformation. If a joint is
instanced, only the first instance is put back into bind-pose
(which automatically puts back the others too). Also, we need
to remember the current transformation, as we need to go back
later.
152: MTransformationMatrix currentTransform = joint.transformation(&status);
153:
154: joint2transform.first = jointPath.node();
155: joint2transform.second = currentTransform;
156: undoInfo.savedTransforms.push_back(joint2transform);
157:
158: MMatrix bindPoseMatrix = getBindPoseMatrix(joint);
|
Now the difficult task: getting the bind-pose matrix. There
are several methods of doing it, and gpExport unfortunately
uses one, that is not completly correct. For the correct way
look at greggman's site (again). We first find the bindPose -plug and all connected
nodes:
61: MPlug tempBindPosePlug = joint.findPlug("bindPose");
62:
63: MPlugArray mapConnections;
64: tempBindPosePlug.connectedTo(mapConnections, false, true);
|
we then get the first found connection, search for the
xformMatrix -attribute, and finally extract it:
78: MPlug bindPosePlug = mapConnections[0];
79:
80: // this node should be a "dagPose"-node (in case you want to look it
81: // up in the help)
82: MFnDependencyNode bindPoseNode(bindPosePlug.node());
83:
84: // and as such, has the "xformMatrix"-attribute.
85: MObject xformMatrixAttribute = bindPoseNode.attribute("xformMatrix");
86:
87: MPlug localTransformPlug(bindPosePlug.node(), xformMatrixAttribute);
88: // xformMatrix is an array. to get our localmatrix we need to select
89: // the same index, as our bindPosePlug (logicalIndex()).
90: localTransformPlug.selectAncestorLogicalIndex(
91: bindPosePlug.logicalIndex(), xformMatrixAttribute);
92:
93: MObject localMatrixObject;
94: localTransformPlug.getValue(localMatrixObject);
|
I don't know if this is really necessary, but it can't hurt:
syncing the meshes:
105: for (MItDag dagIt(MItDag::kDepthFirst, MFn::kMesh, &status);
106: !dagIt.isDone();
107: dagIt.next())
108: {
109: cout << ".";
110: MDagPath meshPath;
111: dagIt.getPath(meshPath);
112: MFnMesh mesh(meshPath.node());
113: mesh.syncObject();
114: }
|
Undoing the information is way easier:
178: for (BindPoseUndoInformation::JointMatrixVector::const_iterator
179: it = undoInfo.savedTransforms.begin();
180: it != undoInfo.savedTransforms.end();
181: ++it)
182: {
183: cout << ".";
184: status = MFnIkJoint(it->first).set(it->second);
185: if (!status)
186: cout << "prob in undoInfo" << endl;
187: }
188:
189: MIkSystem::setGlobalSnap(undoInfo.ikSnap);
190: MIkSystem::setGlobalSolve(undoInfo.ikSolve);
191:
192: cout << endl;
193:
194: syncMeshes();
|
As gpExport already does all this for you, I
advise using its implementation
Skeletons are essentially hierarchical transformations:
a transformation-matrix and its children. In addition we store
the joint-name, as we'll use it as identifier. Eventhough not
necessary we keep the world-transfrom too (skeleton.hpp ):
18: struct JointNode
19: {
20: std::string name;
21: std::vector<JointNode> children;
22: MMatrix localTransform;
23:
24: // is not necessary (as we have the hierarchy,
25: // and the localTransform).
26: // only included to avoid recalculations.
27: MMatrix worldTransform;
28: };
29:
30: struct Skeleton
31: {
32: std::vector<JointNode> rootNodes;
33: };
|
All sequent code-snippets of this subsection are taken from
skeletonExtraction.cpp . The extraction itself is not that difficult: for each root-joint, we
recursively extract the hierarchy.
67: for (MItDag dagIt(MItDag::kDepthFirst, MFn::kJoint, &status);
68: !dagIt.isDone();
69: dagIt.next())
70: {
71: MDagPath jointPath;
72: dagIt.getPath(jointPath);
73: if (shouldJointBeExtracted(jointPath))
74: skeleton.rootNodes.push_back(
75: extractSkeletonHierarchy(jointPath, 2));
76: // children have already been treated by extractSkeletonHierarchy,
77: // or are intentionally ignored
78: dagIt.prune();
|
The extractSkeletonHierarchy -method first gets the
joint-name. Then the local transformation, and the world transform.
Finally it iterates over its children:
28: currentJointNode.name = jointPath.partialPathName().asChar();
29:
30: MFnTransform transform(jointPath);
31: currentJointNode.localTransform = transform.transformation().asMatrix();
32: currentJointNode.worldTransform = jointPath.inclusiveMatrix();
33: for (uint32 i = 0; i < jointPath.childCount(); ++i)
34: {
35: if (jointPath.child(i).hasFn(MFn::kJoint))
36: {
37: MDagPath childPath;
38: childPath.set(jointPath);
39: childPath.push(jointPath.child(i));
40: if (!shouldJointBeExtracted(childPath))
41: continue; // prune tree
42: JointNode childJointNode = extractSkeletonHierarchy(childPath,
43: depth + 1);
44: currentJointNode.children.push_back(childJointNode);
|
gpExport gets the tracks (the keyframes and their transformations)
for all joints. The struct holding this information has 3 additional
fields: fps , start end end . fps
obviously holds the frames per second. This also means, that some
Maya-fps-settings can't be correctly extracted (for instance, all fps
smaller the one). start and end are redundant
fields, as the beginning and end of the animation can be found in the
tracks, but often simplifies the output. (animation.hpp )
22: struct KeyFrame
23: {
24: MTime time;
25: MMatrix transformation;
26: };
27:
28: typedef std::vector<KeyFrame> Track;
29: typedef std::map<std::string, Track> StringTrackMap;
30:
31: struct Animation
32: {
33: uint32 fps;
34: MTime start; // first keyframe. redundant information
35: // (could be extracted out of the tracks)
36:
37: MTime end; // last keyframe. redundant information
38: // (could be extracted out of the tracks)
39:
40: StringTrackMap tracks;
41: };
|
The extraction is done in three steps:
- get all animated joints.
- get the key-times for all joints.
- and finally get the transformations.
The animated joints are quite easy to obtain:
60: for (MItDag dagIt(MItDag::kDepthFirst, MFn::kJoint, &status);
61: !dagIt.isDone();
62: dagIt.next())
63: {
64: MDagPath jointPath;
65: dagIt.getPath(jointPath);
66:
67: if (!MAnimUtil::isAnimated(jointPath))
68: {
69: cout << "not animated" << endl;
70: continue;
71: }
72:
73: jointPaths.push_back(jointPath);
|
The key-times aren't that difficult neither: for every animated joint
we look for the animated plugs, get the MFnAnimCurve s, which
hold all the times, and extract them:
37: MPlugArray animatedPlugs;
38: MAnimUtil::findAnimatedPlugs(jointPath, animatedPlugs);
39: for (unsigned int i = 0; i < animatedPlugs.length(); ++i)
40: {
41: MObjectArray curves;
42: MAnimUtil::findAnimation(animatedPlugs[i], curves);
43: for (unsigned int j = 0; j < curves.length(); ++j)
44: {
45: MFnAnimCurve curve(curves[j]);
46: for (unsigned int k = 0; k < curve.numKeys(); ++k)
47: jointTimes.insert(curve.time(k));
48: } // for curves
49: } // for animatedPlugs
|
Then we create a times->joint map, so all times are sorted (and we
know what joint is animated at each time). We need a multi-map here, as
several joints are usually animated at the same time
(animationExtraction.hpp/cpp ):
24: typedef std::multimap<MTime, uint32> Times2JointMap;
|
87: for (uint32 i = 0; i < animatedJointPaths.size(); ++i)
88: {
89: MDagPath jointPath = animatedJointPaths[i];
90:
91: std::set<MTime> jointTimes = extractKeyFrameTimes(jointPath);
92:
93: // the jointTimes-set contains all key-times this joint is
94: // animated with.
95: for (std::set<MTime>::const_iterator it = jointTimes.begin();
96: it != jointTimes.end();
97: ++it)
98: // insert pairs [time, {animatedJointPath}Index] into
99: // the times2JointMap.
100: times2JointMap.insert(Times2JointMap::value_type(*it, i));
101: }
|
Once all key-times have been extracted, we set Maya's animation-time
to every time of this map, and get the transformations for every joint
that is animated.
159: // save initial time to go back after we have extracted the
160: // transformations.
161: const MTime initialTime = MAnimControl::currentTime();
162:
163: // mayaTime = time Maya is set to. (property stays true in the
164: // following loop). I avoided naming it "currentTime", as i name
165: // my loop-vars currentXX.
166: MTime mayaTime = initialTime;
167:
168: // times2Joint is a multiset and hence sorted.
169: for (Times2JointMap::const_iterator it = times2JointMap.begin();
170: it != times2JointMap.end();
171: ++it)
172: {
173: if (mayaTime != it->first)
174: {
175: nbKeyTimes++; // just for logging
176: MAnimControl::setCurrentTime(it->first);
177: mayaTime = it->first;
178: }
179: Track& currentTrack = result.tracks[jointNames[it->second]];
180: MDagPath currentJointPath = animatedJointPaths[it->second];
181: KeyFrame newKeyFrame;
182: newKeyFrame.time = it->first;
183: // extract the transformation for this joint.
184: MFnTransform transform(currentJointPath);
185: newKeyFrame.transformation = transform.transformation().asMatrix();
186: currentTrack.push_back(newKeyFrame);
187: }
188: // back to initial time
189: MAnimControl::setCurrentTime(initialTime);
|
1: Maya doesn't need to know,
what most plugins do, as long, as it receives the position at every given
frame.
|